当前位置: 首页 > 知识库问答 >
问题:

Bool查询中带WOLL子句的Elasticsearch函数得分查询

邢高爽
2023-03-14

这是一个关于2个查询的故事。一个返回结果,而另一个不返回结果。为什么?

返回结果的查询:

{
   "index":"my_index",
   "type":"places",
   "body":{
      "from":0,
      "size":"12",
      "sort":{
         "_score":{
            "order":"desc"
         }
      },
      "query":{
         "function_score":{
            "query":{
               "bool":{
                  "must":[

                  ],
                  "should":[

                  ],
                  "must_not":[

                  ],
                  "filter":[

                  ]
               }
            },
            "functions":[
               {
                  "gauss":{
                     "location":{
                        "origin":{
                           "lat":"41.243368",
                           "lon":"-116.79711"
                        },
                        "offset":"0mi",
                        "scale":"100mi"
                     }
                  }
               }
            ],
            "score_mode":"sum",
            "boost_mode":"sum"
         }
      }
   }
}
{
   "index":"my_index",
   "type":"places",
   "body":{
      "from":0,
      "size":"12",
      "sort":{
         "_score":{
            "order":"desc"
         }
      },
      "query":{
         "function_score":{
            "query":{
               "bool":{
                  "must":[

                  ],
                  "should":[
                     {
                        "terms":{
                           "region_id":[
                              32273
                           ],
                           "boost":2
                        }
                     }
                  ],
                  "must_not":[

                  ],
                  "filter":[

                  ]
               }
            },
            "functions":[
               {
                  "gauss":{
                     "location":{
                        "origin":{
                           "lat":"41.243368",
                           "lon":"-116.79711"
                        },
                        "offset":"0mi",
                        "scale":"100mi"
                     }
                  }
               }
            ],
            "score_mode":"sum",
            "boost_mode":"sum"
         }
      }
   }
}

共有1个答案

芮建茗
2023-03-14

第一个查询充当match_all查询,因此它返回所有内容并应用函数score。在第二个查询中,您有一个show子句,但是由于没有mustfilter子句,所以必须匹配。

摘自ES Docs:“在没有must或filter子句的布尔查询中,一个或多个should子句必须与文档匹配”

 类似资料:
  • 文档说过滤后的查询是 在2.0.0-beta1中不推荐使用。使用bool查询,查询使用must子句,筛选器使用filter子句。 来源 这是对filter子句的正确使用吗? 查询是,筛选器是

  • 还有 我可以使用多个过滤器在一个必须像下面的代码:

  • 问题内容: 将SELECT查询放在UPDATE查询的WHERE子句中时出现错误。 我的查询是这样的: AND错误将显示如下: “无法在FROM子句中指定目标表’m’进行更新” 问题答案: 实际上,您可以通过将其包装在子查询中来更新它(从而为结果创建临时表) 或使用 JOIN

  • 我想使用elasticsearch功能得分自定义评分,这些是我的排名优先事项: > 与查询的共同术语数(例如,一个文档在查询中有4个术语中的3个,无论每个术语的TF/IDF得分有多大,它的排名都应该高于一个文档在查询中有4个术语中的2个)。在弹性文献中,它被称为协调因子。 术语相关性之和。(过渡联邦/以色列国防军) 文档受欢迎程度(每个文档的票数,如《受欢迎程度提升》中所述) 这是当前使用的ela

  • 问题内容: 我有以下SQL表 部 雇员 我想写一条返回的声明 我有 当然,这缺少“男性雇员的数量”。由于不确定,我被困在这里,在哪里指定附加子句e.gender = male。 我忘了提:HQL或标准会很好。 问题答案: 假设原始查询和架构正确:

  • 问题内容: 我们正在开发一个使用EJB连接到数据库的Web应用程序。 在我们的数据库模型中,我们有一个移动设备表,另一个有功能表,最后一个有手机模型映射功能值的表。模型(id_model,…)功能(id_feature,…)model_features(id_model,id_feature,值) 我们想要执行一个查询,以按匹配特征的数量对模型进行排序。就是说,我们传递了一个要匹配的功能列表(即从