我正在尝试对我的 Elasticsearch 数据集执行查询。我的目标是获得符合任何一个标准的所有记录,所以基本上是一堆 OR。我的查询如下所示:
{
"query" : {
"filtered" : {
"query" : {
"match_all":{}
},
"filter" : {
"or" : [
{"match" : {"field1" : ["value1", "value1.5"]}},
{"match" : {"field2" : ["value2", "value2.5"]}},
{"match" : {"field3" : ["value3", "value3.5"]}},
{"match" : {"field4" : ["value4", "value4.5"]}}
]
}
}
}
}
Field1-Field4在elasticsearch中全部存储为数组。我需要获取任何查询值与存储数组中的任何值匹配的所有结果。
如果它们之间有任何匹配,我需要返回结果。 谁能指出这有什么问题吗?当我知道它们在那里时,我没有得到任何结果。
最佳答案
您正在使用 match
作为过滤器类型,据我所知,它不存在。
根据您当前的设置,您可以使用 terms
来代替。
http://www.elasticsearch.org/guide/reference/query-dsl/terms-query/
所以:
{
"query" : {
"filtered" : {
"query" : {
"match_all":{}
},
"filter" : {
"or" : [
{"terms" : {"field1" : ["value1", "value1.5"]}},
{"terms" : {"field2" : ["value2", "value2.5"]}},
{"terms" : {"field3" : ["value3", "value3.5"]}},
{"terms" : {"field4" : ["value4", "value4.5"]}}
]
}
}
}
}
关于elasticsearch - Elastic Search 中的 OR 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16703736/