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