0
我使用Elasticsearch 5.1.1,在我的索引中批量插入文檔,我需要在響應中獲取文檔字段之一以及自動生成的_id以更新數據庫。Elasticsearch 5 - 在批量插入時從文檔返回字段
我一直在努力如同下列的請求:
curl -XPOST localhost:9200/_bulk?pretty -d '
{ "index" : { "_index" : "articles_201701", "_type" : "articles_type" , "_source_include" : "db_id"} }
{ "db_id" : "value1" }
{ "index" : { "_index" : "articles_201701", "_type" : "articles_type" , "_source_include" : "db_id"} }
{ "db_id" : "value2" }
'
curl -XPOST localhost:9200/_bulk?pretty -d '
{ "index" : { "_index" : "articles_201701", "_type" : "articles_type", "fields" : ["db_id"]} }
{ "db_id" : "value1" }
{ "index" : { "_index" : "articles_201701", "_type" : "articles_type", "fields" : ["db_id"]} }
{ "db_id" : "value2" }
'
curl -XPOST 'localhost:9200/_bulk?pretty&fields=db_id' -d '
{ "index" : { "_index" : "articles_201701", "_type" : "articles_type" } }
{ "db_id" : "value1" }
{ "index" : { "_index" : "articles_201701", "_type" : "articles_type"} }
{ "db_id" : "value2" }
'
他們中有些人有輕微的變化和組合,但沒有運氣。
不知道這甚至有可能...
當使用批量插入文檔時,你需要應用_index,_type和_Id,如果你不應用_id elasticsearch會爲你生成_id,並且在響應中你會得到生成_id。 Elasticsearch不會生成其他字段 – Lax
感謝您的回答和對不起,也許我沒有解釋得很好,我確實需要ES來生成_id,但我也需要它返回「db_id」字段(是的,那個我索引,來自文檔)以及_id。這樣,我可以執行類似於 UPDATE表設置elastic_id = _id WHERE db_id =:db_id' 也許這不是正確的方法,但是,我認爲查詢返回_ids(從批量插入)到知道db_ids是開銷太多...... 我想要做的就像pgsql的'INSERT INTO表VALUES(?,?,?)RETURNING ID,name'類似的東西 –
如果您生成db_id,爲什麼您需要elasticsearch返回它適合你嗎? – Lax