elasticsearch 如何在Elasticsearch suggester中使用Logstash导入CSV数据以完成字段类型,elasticsearch,logstash,elasticsearch,Logstash" /> elasticsearch 如何在Elasticsearch suggester中使用Logstash导入CSV数据以完成字段类型,elasticsearch,logstash,elasticsearch,Logstash" />

elasticsearch 如何在Elasticsearch suggester中使用Logstash导入CSV数据以完成字段类型

elasticsearch 如何在Elasticsearch suggester中使用Logstash导入CSV数据以完成字段类型,elasticsearch,logstash,elasticsearch,Logstash,创建ElasticSearch索引 curl -XPOST 'http://localhost:9200/music/' -d '{}' 场映射 curl -XPUT 'http://localhost:9200/music/_mapping/song' -d ' { "properties": { "name" : { "type" : "string" }, "suggest": { "type" : "completion" }

创建ElasticSearch索引

curl -XPOST 'http://localhost:9200/music/' -d '{}'
场映射

curl -XPUT 'http://localhost:9200/music/_mapping/song' -d '
{
  "properties": {
    "name" : {
      "type" : "string"
    },
    "suggest": {
      "type" : "completion"
    }
  }
}'
日志存储配置文件,musicStash.config

input {
    file {
        path => "pathToCsv"
        start_position => beginning
    }
}

filter {  
    csv {
        columns => ["id", "name", "suggest"]
        separator => ","
    }
}

output {
    elasticsearch {
        hosts => "localhost"
        index => "music"
        document_id => "%{id}"
    }
}
现在,在执行logstash配置文件时,在elasticsearch控制台中收到以下异常

failed to put mappings on indices [[music]], type [logs]
java.lang.IllegalArgumentException: Mapper for [suggest] conflicts with existing mapping in other types:
[mapper [suggest] cannot be changed from type [completion] to [string]]
at org.elasticsearch.index.mapper.FieldTypeLookup.checkCompatibility(FieldTypeLookup.java:117)
日志存储控制台中接收到错误

response=>{"index"=>{"_index"=>"music", "_type"=>"logs", "_id"=>"5", "status"=>400, 
"error"=>{"type"=>"illegal_argument_exception", 
"reason"=>"Mapper for [suggest] conflicts with existing mapping in other types:\n[mapper [suggest] cannot be changed from type [completion] to [string]]"}}}, :level=>:warn}

那么如何通过Logstash导入csv文件来实现elasticsearch自动完成功能。

您的
elasticsearch
输出中缺少以下设置:

document_type => "song"
发生的情况是,logstash正在创建一个名为
logs
()的新类型,并且由于从ES 2.0开始,禁止在同一索引中有两个名称相同但类型不同的字段(
string
vs
completion
),因此出错了

只需像这样修改输出,它就会工作:

output {
    elasticsearch {
        hosts => "localhost"
        index => "music"
        document_type => "song"
        document_id => "%{id}"
    }
}

您的
elasticsearch
输出中缺少以下设置:

document_type => "song"
发生的情况是,logstash正在创建一个名为
logs
()的新类型,并且由于从ES 2.0开始,禁止在同一索引中有两个名称相同但类型不同的字段(
string
vs
completion
),因此出错了

只需像这样修改输出,它就会工作:

output {
    elasticsearch {
        hosts => "localhost"
        index => "music"
        document_type => "song"
        document_id => "%{id}"
    }
}
我是
如果您只想将CSV数据加载到elasticsearch中,您可以使用elasticsearch\u加载程序
安装后,您可以通过发布以下命令将csv/json/parquet文件加载到elasticsearch中:

elasticsearch_loader \
  --index-settings-file mappings.json \
  --index completion \
  --type song \
  --id-field id \
  csv \
  input1.csv input2.csv
我是
如果您只想将CSV数据加载到elasticsearch中,您可以使用elasticsearch\u加载程序
安装后,您可以通过发布以下命令将csv/json/parquet文件加载到elasticsearch中:

elasticsearch_loader \
  --index-settings-file mappings.json \
  --index completion \
  --type song \
  --id-field id \
  csv \
  input1.csv input2.csv

如果您需要为单个文档添加多个建议,您的解决方案将如何工作?例如,一个地址文档的第1行、第2行、第3行和邮政编码都可以作为单个地址字段的建议。如果您需要为单个文档添加多个建议,您的解决方案将如何工作,例如,一个地址文档可以将第1行、第2行、第3行和邮政编码全部作为单个地址字段的建议者。Sheel,在使用logstash时,如何实现将单个文档的多个建议者导入为每个文档的单个建议者?Sheel,在使用logstash时,如何实现为单个文档导入多个建议,就像为每个文档导入一个建议一样?