我有一个类似的文件:
{
name: "bob",
contains: ["a", "b", "c"]
},
{
name: "mary",
contains: ["a", "b"]
},
{
name: "Jason",
contains: ["b"]
}
我想查询所有包含“a”(bob和mary)的人。我该如何编写查询?
编辑:
当前查询:
query: {
bool: {
must: [
{ match: { exists: "yes" }},
{ term: {contains: "a"}}
],
must_not: [
{ match: { status: "removed"}}
]
}
}
答案 0 :(得分:0)
contains
字段上的字词过滤/查询,例如{term: {contains: "a"}}
,可以满足您的需求。假设您只想匹配满足该条件的任何文档,则完整查询将类似于:
{
"query": {
"filtered": {
"filter": {
"term": {
"contains": "a"
}
}
}
}
}
这是因为值数组是单独索引的,如果查询的字段是列表,则术语查询将查找包含包含该值的数组的文档。