用于在特定列上创建索引的 Apache solr curl 命令
Apache solr curl commad for creating index on specific columns
环境 - solr-8.9.0
要在 apache-solr 8.9.0 中加载具有 4 列的 csv 文件,我正在执行以下 curl 命令。
curl 'http://localhost:8983/solr/index/update?commit=true&separator=|' --data-binary @/home/solr/CsvFile_first4Columns.csv -H 'Content-type:application/csv'
上面的命令是在所有 4 列上创建索引,但我只想在第一列上创建索引,我该怎么做?
.csv文件内容如下
Admission_number,Name,Fathers_name,DOA
536481641,Minod bhanuka,Dasun shanka,21/05/1970
28255821,Jonny bairstow,Tom banton,30/06/1982
218057537,Ben duckett,Glenn philips,28/07/1950
以下内容由 solr-8.9 自动插入到托管模式文件中。
<field name="DOA" type="text_general"/>
<field name="Fathers_name" type="text_general"/>
<field name="Admission_number" type="plongs"/>
<field name="Name" type="text_general"/>
------
<copyField source="Fathers_name" dest="Fathers_name_str" maxChars="256"/>
<copyField source="DOA" dest="DOA_str" maxChars="256"/>
<copyField source="Name" dest="Name_str" maxChars="256"/>
看起来 Solr 为您的每个字段猜测了非常好的字段类型:plongs
用于帐号(尽管 plong
可能会更好),text_general
用于名称领域。它没有将您的日期字段识别为日期,因此默认为 text_general
.
如果您只想索引其中一个字段,并且我假设您确实想存储其他三个字段,则需要使用适当的设置提前(在索引之前)定义字段。
例如,以下命令将 Admission_number
定义为将存储和索引的整数 (plong
) 单个值:
curl -X POST -H 'Content-type:application/json' --data-binary '{
"add-field":{
"name":"Admission_number",
"type":"plong",
"multiValued":false,
"stored":true,
"indexed":true
}
}' http://localhost:8983/solr/index/schema
以下命令将为名称定义一个字符串字段,将其标记为单个值,以便存储(以便您可以检索它)而不是对其进行索引(因此您将无法搜索它) .您可以使用 text_general
而不是 string
并将其标记为 indexed=true
如果您希望能够搜索它:
curl -X POST -H 'Content-type:application/json' --data-binary '{
"add-field":{
"name":"Name",
"type":"string",
"multiValued":false,
"stored":true,
"indexed":false
}
}' http://localhost:8983/solr/index/schema
要实现这一点,我建议从全新的 Solr 核心开始,定义字段,然后重新导入数据。
最后一点:您在当前 [=39= 的 copyFields
(Fathers_name_str
、DOA_str
和 Name_str
)中看到的额外字段定义] 是 Solr 在自动创建 text_general
字段时所做的事情。 _str
字段是用于某些优化的字段的字符串版本。当您手动定义字段时,它们不会被创建。
环境 - solr-8.9.0
要在 apache-solr 8.9.0 中加载具有 4 列的 csv 文件,我正在执行以下 curl 命令。
curl 'http://localhost:8983/solr/index/update?commit=true&separator=|' --data-binary @/home/solr/CsvFile_first4Columns.csv -H 'Content-type:application/csv'
上面的命令是在所有 4 列上创建索引,但我只想在第一列上创建索引,我该怎么做?
.csv文件内容如下
Admission_number,Name,Fathers_name,DOA
536481641,Minod bhanuka,Dasun shanka,21/05/1970
28255821,Jonny bairstow,Tom banton,30/06/1982
218057537,Ben duckett,Glenn philips,28/07/1950
以下内容由 solr-8.9 自动插入到托管模式文件中。
<field name="DOA" type="text_general"/>
<field name="Fathers_name" type="text_general"/>
<field name="Admission_number" type="plongs"/>
<field name="Name" type="text_general"/>
------
<copyField source="Fathers_name" dest="Fathers_name_str" maxChars="256"/>
<copyField source="DOA" dest="DOA_str" maxChars="256"/>
<copyField source="Name" dest="Name_str" maxChars="256"/>
看起来 Solr 为您的每个字段猜测了非常好的字段类型:plongs
用于帐号(尽管 plong
可能会更好),text_general
用于名称领域。它没有将您的日期字段识别为日期,因此默认为 text_general
.
如果您只想索引其中一个字段,并且我假设您确实想存储其他三个字段,则需要使用适当的设置提前(在索引之前)定义字段。
例如,以下命令将 Admission_number
定义为将存储和索引的整数 (plong
) 单个值:
curl -X POST -H 'Content-type:application/json' --data-binary '{
"add-field":{
"name":"Admission_number",
"type":"plong",
"multiValued":false,
"stored":true,
"indexed":true
}
}' http://localhost:8983/solr/index/schema
以下命令将为名称定义一个字符串字段,将其标记为单个值,以便存储(以便您可以检索它)而不是对其进行索引(因此您将无法搜索它) .您可以使用 text_general
而不是 string
并将其标记为 indexed=true
如果您希望能够搜索它:
curl -X POST -H 'Content-type:application/json' --data-binary '{
"add-field":{
"name":"Name",
"type":"string",
"multiValued":false,
"stored":true,
"indexed":false
}
}' http://localhost:8983/solr/index/schema
要实现这一点,我建议从全新的 Solr 核心开始,定义字段,然后重新导入数据。
最后一点:您在当前 [=39= 的 copyFields
(Fathers_name_str
、DOA_str
和 Name_str
)中看到的额外字段定义] 是 Solr 在自动创建 text_general
字段时所做的事情。 _str
字段是用于某些优化的字段的字符串版本。当您手动定义字段时,它们不会被创建。