elasticsearch:匹配其数组包含此字段的文档

我有一个与此类似的文件:

{

name: "bob",

contains: ["a", "b", "c"]

},

{

name: "mary",

contains: ["a", "b"]

},

{

name: "Jason",

contains: ["b"]

}

我要查询以查找所有包含“ a”的人(鲍勃和玛丽)。如何编写查询?

编辑:

当前查询:

                query: {

bool: {

must: [

{ match: { exists: "yes" }},

{ term: {contains: "a"}}

],

must_not: [

{ match: { status: "removed"}}

]

}

}

回答:

contains字段上使用术语过滤器/查询(例如){term: {contains:

"a"}}可以满足您的需求。假设您只想匹配满足该条件的任何文档,则完整查询将类似于:

{

"query": {

"filtered": {

"filter": {

"term": {

"contains": "a"

}

}

}

}

}

之所以可行,是因为值数组是分别索引的,并且如果查询的字段是列表,则术语查询将查找包含包含该值的数组的文档。

以上是 elasticsearch:匹配其数组包含此字段的文档 的全部内容, 来源链接: utcz.com/qa/429287.html

回到顶部