node.js:使用用户定义的id在elasticsearch中进行数据索引

时间:2012-10-03 07:50:59

标签: node.js elasticsearch

我需要在elasticsearch中索引多个jsons,索引id应由用户给出,而不是由elasticserach自动创建。

请告诉我如何阻止elasticsearch创建自动索引ID,以及如何使用我想要的id进行数据索引。

以下是用于索引数据的node.js代码的一部分:

elasticSearchClient.index('index_name', 'type', json)
                .on('data', function(data) {
                    console.log("************ "+data+" ****************")
                })
                .exec()

任何帮助将不胜感激!

此致

4 个答案:

答案 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()是我的问题的解决方案。

参考: https://github.com/phillro/node-elasticsearch-client