Elasticsearch:如何使用两个不同的多个匹配字段?

我想做类似于“和”过滤器示例的操作,除了每个示例中都带有“应该”的术语,而不是示例中的字段类型。我提出以下内容:

    {

"query": {

"bool": {

"must": [

{

"ids": {

"type": "foo",

"values": [

"fff",

"bar",

"baz",

]

}

}

]

}

},

"filter": {

"and": {

"filters": [

{

"bool": {

"should": {

"term": {

"fruit": [

"orange",

"apple",

"pear",

]

}

},

"minimum_should_match": 1

}

},

{

"bool": {

"should": {

"term": {

"color": [

"red",

"yellow",

"green"

]

}

},

"minimum_should_match": 1

}

}

]

}

}

}

但是,我收到此错误:

[bool] filter does not support [minimum_should_match];

还有另一种方法可以执行我正在尝试执行的操作,还是我走在正确的轨道上?还是在Elasticsearch中这是不可能的?

回答:

每个布尔查询子句可以包含多个子句。字词查询(http://www.elasticsearch.org/guide/reference/query-

dsl/terms-query/)是一种指定查询应与任何字词列表匹配的简便方法。除了使用之前的ID查询,以下使用术语查询说水果必须是橙色,苹果,梨和颜色之一必须是红色,黄色,绿色之一。

{

"query": {

"bool": {

"must": [

{

"ids": {

"type": "foo",

"values": [

"fff",

"bar",

"baz"

]

}

},

{

"terms": {

"fruit": [ "orange", "apple","pear" ],

"minimum_should_match": 1

}

},

{

"terms": {

"color": [ "red", "yellow", "green" ],

"minimum_should_match": 1

}

}

]

}

}

}

以上是 Elasticsearch:如何使用两个不同的多个匹配字段? 的全部内容, 来源链接: utcz.com/qa/425855.html

回到顶部