我正在通过必须在lastName
字段中以某种方式出现“Thomas”的文档来查询我的索引,并且还应该根据geo_point
查询返回返回结果。 geo_point
子句中出现should
查询,因为有可能会传入多个。如果有匹配,我希望文档作为匹配返回。知道为什么这不起作用吗?我已经按照文档as outlined here进行了操作。
“应该:这些查询中至少有一个必须匹配。相当于OR”
{
"sort": [{
"_score": {
"order": "desc"
}
}],
"query": {
"bool": {
"must": [{
"query_string": {
"default_field": "lastName",
"query": "Thomas"
}
}],
"should": [{
"geo_distance": {
"distance": "5mi",
"coordinates": "32.798913, -79.998085"
}
}]
}
}
}
答案 0 :(得分:0)
嵌套非常重要。在上面的代码中,should
与must
并存;因此,它的功能类似于"找到像托马斯这样的姓氏或者在查尔斯顿居住5mi的人#34;。以下内容将geo_point
查询作为兄弟与任何其他must
子句嵌套。
"找到像Thomas一样的姓氏(在查尔斯顿的5mi或亚特兰大的5mi等等。"
{
"sort": [{
"_score": {
"order": "desc"
}
}],
"query": {
"bool": {
"must": [{
"query_string": {
"default_field": "lastName",
"query": "Thomas"
}
},
{
"bool": {
"should": [{
"geo_distance": {
"distance": "5mi",
"coordinates": "32.798913, -79.998085"
}
}]
}
}
]
}
}
}