用于在特定列上创建索引的 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= 的 copyFieldsFathers_name_strDOA_strName_str)中看到的额外字段定义] 是 Solr 在自动创建 text_general 字段时所做的事情。 _str 字段是用于某些优化的字段的字符串版本。当您手动定义字段时,它们不会被创建。