gpt4 book ai didi

elasticsearch - 在Elasticsearch可选字段上进行过滤

转载 作者:行者123 更新时间:2023-12-02 22:32:16 26 4
gpt4 key购买 nike

我正在使用Elasticsearch查询具有可选位置字段的文档类型。搜索时,如果该字段不存在,则应返回这些结果,并根据需要的结果进行过滤。

看来Elasticsearch中的OR过滤器不会短路,如下所示:

"query": {
"filtered": {
"query": {
"match_phrase_prefix": {
"display_name": "SearchQuery"
}
},
"filter": {
"or": [
{
"missing": {
"field": "location"
}
},
{
"geo_distance" : {
"distance" : "20mi",
"location" : {
"lat" : 33.47,
"lon" : -112.07
}
}
}
]
}

失败,显示“无法找到geo_point字段[location]”。

有什么方法可以在ES中执行此操作(或沿相同方向执行的操作)?

最佳答案

我不知道您的为什么不工作,但过去我曾成功使用bool filtershould选项本质上是or,并确保至少有一个为true。如果仍然无法解决问题,请尝试一下并评论我的答案。还要仔细检查一下,我正确地复制了您的查询字词:)

{
"filtered" : {
"query" : {
"match_phrase_prefix": {
"display_name": "SearchQuery"
}
},
"filter" : {
"bool" : {
"should" : [
{
"missing": { "field": "location" }
},
{
"geo_distance" : {
"distance" : "20mi",
"location" : {
"lat" : 33.47,
"lon" : -112.07
}
}
}
]
}
}
}
}

关于elasticsearch - 在Elasticsearch可选字段上进行过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33129608/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com