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

回到顶部