elasticsearch - ElasticSearch:从布尔查询中的每个查询中获取单独的分数
问题描述
假设我有一个复合布尔查询,其中包含各种“必须”和“应该”语句,每个语句可能包含不同的叶查询,包括“多重匹配”和“匹配短语”查询,如下所示。
如何从打包到单个查询中的单个查询中获得分数?我知道一种方法可能是将其分解为多个查询,执行每个查询,然后在代码级别(而不是查询级别)聚合结果。但是,我认为效率较低,另外,我失去了 ElasticSearch 的排序/分页/.... 功能。
我认为“解释 API”对我也没有用,因为它提供了非常低级的评分细节(效率低且难以解析),而我只需要知道每个特定叶查询的分数(我也已经命名他们)
如果我在任何术语(例如复合,叶子)上错了,请纠正我。大图是如何从布尔查询中的每个子查询中获取单独的分数。
PS:我在 bool query 中遇到了不同的分数函数。但是,它不会返回分数。如果我将我的查询包装在“function_score”中,我希望评分为默认值,但获取单个分数以响应查询。
请看下面的片段:
{
"query": {
"bool": {
"must": [
{
"multi_match": {
"query": "...",
"fields": [
"field1^3",
"field2^5"
],
"_name": "must1_mm",
"boost": 3
}
}
],
"should": [
{
"multi_match": {
"query": "...",
"fields": [
"field3^2",
"field4^5"
],
"boost": 2,
"_name": "should1_mm",
"boost": 2
}
},
{
"match_phrase": {
"field5": {
"_name": "phrase1",
"boost": 1.5,
"query": "..."
}
}
},
{
"match_phrase": {
"field6": {
"_name": "phrase2",
"boost": 1,
"query": "..."
}
}
}
]
}
}
}```
解决方案
推荐阅读
- json - 我想将查询存储为 JSON 对象。(错误:SELECT INTO 语句中不允许使用 FOR JSON 子句。)
- reactjs - 反应图像加载
- python - 导入包适用于一个文件,但返回另一个文件错误
- spring-boot - Spring Boot 2.0.0+ 分页、maven 和 hibernate
- freertos - Cortex M3 - Systick NVIC 禁用 - 节能 FreeRTOS
- bitmap - SDL 如何打包像素?
- aws-lambda - Lambda ARN 的默认 IAM 权限是什么?
- traefik - traefik 错误的 TXT 记录
- css - 如何使我的主图像出现在我的标头和按钮部分的背景中
- angular - 我的服务可以扩展抽象类吗?我的抽象类应该是@Injectable 吗?