在「字段」中表示時,嵌套數組變得平坦。我期望來自相同路徑的值被合併,但內部數據結構不會被修改。如何防止Elasticsearch在「字段」中展平二維數組 - 包含查詢
有人可以解釋我是否做錯了什麼,或者這是否屬於Elasticsearch問題?
重現步驟:
創建2D數據
curl -XPOST localhost:9200/test/5 -d '{ "data": [ [100],[2,3],[6,7] ] }'
查詢數據,指定字段
curl -XGET localhost:9200/test/5/_search -d '{"query":{"query_string":{"query":"*"} }, "fields":["data"] } }'
結果:
{"took":1,"timed_out":false,"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":1,"max_score":1.0,"hits":[{"_index":"test","_type":"5","_id":"AVdsHJrepOClGTFyoGqo","_score":1.0,"fields":{"data":[100,2,3,6,7]}}]}}
重複,而無需使用 「字段」 的:
curl -XGET localhost:9200/test/5/_search -d '{"query":{"query_string":{"query":"*"} } } }'
結果:
{"took":1,"timed_out":false,"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":1,"max_score":1.0,"hits":[{"_index":"test","_type":"5","_id":"AVdsHJrepOClGTFyoGqo","_score":1.0,"_source":{ "data": [ [100],[2,3],[6,7] ] }}]}}
注意_source和字段不同,在 「場」 分解2D陣列成1D陣列。
安德烈,請解決這個問題的答案是:{ 「_source」:{ 「包括」: 「數據」}, 「查詢」:{ 「QUERY_STRING」:{ 「查詢」:「*」}}}'(缺少方括號。此外,雖然這提供了一個有用的演示,說明如何避免請求不必要的字段,但是您能否解釋爲什麼字段拼合2D數組?這是問題的一部分。 –
@AlexeiKotlar - 我不知道爲什麼它會使數組變平,但Uli的帖子很有意義 - lucene將數組的數組作爲平面數組索引,因此當您指定'field' request屬性時,lucene只能檢索到平面版本 我們都有完整的答案,請標記你感覺更有用:) – Andrey