0
名單上我有值的元組的列表,像這樣:匹配字段值組合在elasticsearch
[("a1", "b1", "b1"), ("a2", "b2", "b3")... ("a_n", "b_n", "c_n")]
這是一組值的字段「A」,「B」和「C 「我想用它來匹配elasticsearch中的文檔。我該如何做這種類型的多領域術語查詢,其中匹配必須按上面定義的集合發生?
編輯:
我嘗試使用布爾查詢,像這樣:
query={
"query": {
"bool": {
"should": [{
"bool": {
"must":[
{"term": {"a": a_val}},
{"term": {"b": b_val}},
{"term": {"c": c_val}}
]
}
}
for (a_val, b_val, c_val) in identifiers
]
},
},
}
es.search('my_index', body=query)
,但是這導致:
TransportError(400, 'search_phase_execution_exception', 'failed to create query:...
我也嘗試了布爾查詢的簡化版本但得到了完全相同的錯誤:
query = {
"query": {
"bool": {
"must": [
{"term": {"a": "a1"}},
{"term": {"b": "b1"}},
{"term": {"c": "c1"}}
]
},
},
}
es.search('my_index', body=query)
我在做這些布爾查詢錯誤?
我認爲[bool query](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-bool-query.html#query-dsl-bool-query)是什麼你正在尋找。 – avr
是的,隨着布爾查詢你也必須建模你的數據了一下。您可能需要嵌套的數據類型。看看嵌套的數據類型 – user3775217