我们在elastic
中保存了以下结构中的文档:
{
...
name: "name",
ancestors: ["id1", "id2", "id3"],
...
}
我想创建一个搜索name: "some name"
AND
ancestors contains "id1"
的搜索查询。
我尝试了很多查询但似乎没有查询,或者返回了所需的结果。如果有任何帮助,这个组合查询应该每次只返回一个条目。
我尝试过的一些问题如下:
filtered: {
query: {
query_string: {
query: "name:name"
},
term: {
ancestors: "id1"
}
}
}
__
match: {
name: "name",
ancestors: "id1"
},
defaultOperator: 'AND'
__
bool: {
must: { term: { name: "name" }},
filter: {
term: { ancestors: "id1" }
}
}
映射如下:
{
"data": {
"mappings": {
"entry": {
"properties": {
"ancestors": {
"type": "string"
},
"id": {
"type": "string"
},
"name": {
"type": "string"
}
}
}
}
}
}
我们尚未更改默认映射,这就是ancestors
类型为string
的原因,但我认为这没有任何区别
答案 0 :(得分:1)
尝试此查询:
{
"query": {
"bool": {
"must": [
{
"query_string": {
"default_field": "name",
"query": "stripe AND 1"
}
},
{
"match": {
"ancestors": "id1"
}
}
]
}
}
}