我需要在elasticsearch中索引多个jsons,索引id应由用户给出,而不是由elasticserach自动创建。
请告诉我如何阻止elasticsearch创建自动索引ID,以及如何使用我想要的id进行数据索引。
以下是用于索引数据的node.js代码的一部分:
elasticSearchClient.index('index_name', 'type', json)
.on('data', function(data) {
console.log("************ "+data+" ****************")
})
.exec()
任何帮助将不胜感激!
此致
答案 0 :(得分:2)
只需在json文档中包含id
字段即可。它将自动从文档中提取并放入网址中。事实上,core.js脚本包含以下逻辑:
if (document.id) {
path += "/" + document.id
method = 'PUT'
delete document.id
}
答案 1 :(得分:2)
如果我们不提供索引ID,那么文档的索引id将由elasticsearch自动创建。
所以我使用下面的代码并告诉索引编制doc的索引ID。
var commands = []
commands.push({ "index" : { "_index" :'opt', "_type" : "art", "_id":my_id} })
commands.push(index_ingjson_doc)
elasticSearchClient.bulk(commands, {})
.on('data', function(data) {
}).on('error', function(error){})
.exec();
通过这种方式,我解决了我的问题!其他一些解决方案也许是可能的,但截至目前我正在使用上面的代码。
答案 2 :(得分:1)
如果我理解正确,只需将"_id": whatever
放入您的JSON中,并确保index.mapping._id.indexed
设置为true
。
答案 3 :(得分:1)
elasticSearchClient.bulk()是我的问题的解决方案。