Elasticsearch与字段的匹配列表
我有一个列表,数组或您熟悉的任何一种语言。例如,names:如果与这些名称之一匹配["John","Bas","Peter"]
,我想查询该name
字段。
一种方法是使用OR过滤器。例如
{ "filtered" : {
"query" : {
"match_all": {}
},
"filter" : {
"or" : [
{
"term" : { "name" : "John" }
},
{
"term" : { "name" : "Bas" }
},
{
"term" : { "name" : "Peter" }
}
]
}
}
}
有什么更好的办法吗?如果它是查询,则比过滤器更好。
回答:
{ "query": {
"filtered" : {
"filter" : {
"terms": {
"name": ["John","Bas","Peter"]
}
}
}
}
}
哪一个Elasticsearch会像您曾经使用过的那样重写
{ "query": {
"filtered" : {
"filter" : {
"bool": {
"should": [
{
"term": {
"name": "John"
}
},
{
"term": {
"name": "Bas"
}
},
{
"term": {
"name": "Peter"
}
}
]
}
}
}
}
}
在大多数情况下,使用布尔型过滤器时,使用bool
过滤器比and
或更好or
。原因在Elasticsearch博客中进行了解释:http://www.elasticsearch.org/blog/all-about-
elasticsearch-filter-bitsets/
以上是 Elasticsearch与字段的匹配列表 的全部内容, 来源链接: utcz.com/qa/401865.html