当前位置: 首页 > 面试题库 >

_score,同时在Elasticsearch中进行索引

易淳
2023-03-14
问题内容
{
  "query": {
    "custom_score": {
      "query": {
        "match": {
          "xxx": {
            "query": "foobar"
          }
        }
      },
      "filter": {
        "and": [
          {
            "query": {
              "match": {
                "yyyy": {
                  "query": "barfoo"
                }
              }
            }
          }
        ]
      }
    },
    "script": "_score * doc['_score']"
  }
}

这给出了错误

 [custom_score] query does not support [filter]

那么如何评估这样的查询呢?


问题答案:

我建议您查看有关提升的要求,因为当前的html" target="_blank">脚本没有太大意义。

另外,请查看elasticsearch
查询DSL的文档。它提供复合查询和简单查询,您可以将它们组合在一起。如错误所示,您不能在自定义分数查询中放入过滤器。您可以在自定义分数查询中使用过滤查询:

{
  "query": {
    "custom_score": {
      "query": {
        "filtered" : {
          "query" : {
            "match": {
              "xxx": {
                "query": "foobar"
              }
            }
          },
          "filter" : {
            "and": [
              {
                "query": {
                  "match": {
                    "yyyy": {
                      "query": "barfoo"
                    }
                  }
                }
              }
            ]
          }
        }
      },
      "script": "_score * doc['_score']"
    }
  }
}

或使用像这样的顶级过滤器:

{
  "query": {
    "custom_score": {
      "query": {
        "match": {
          "xxx": {
            "query": "foobar"
          }
        }
      },
      "script": "_score * doc['_score']"
    }
  },
  "filter": {
    "and": [
      {
        "query": {
          "match": {
            "yyyy": {
              "query": "barfoo"
            }
          }
        }
      }
    ]
  }
}

这两个选项的区别在于,如果您在搜索请求中也进行了构面,则不会考虑使用顶级过滤器,而如果将过滤器放入查询中,则会考虑它们。

要看的另一件事:如果只有一个子句,则不需要and过滤器。另外,将全文搜索放在过滤器中通常没有任何意义,因为过滤器是可缓存的,并且鉴于全文搜索是免费的并且几乎是不可预测的,因此将它们缓存是浪费的。



 类似资料:
  • 问题内容: 我在一个网站中使用,其中我从中索引了数据。 这很好。但目前,我必须在字段中搜索的完全匹配项。目前,如果我搜索其条目,也会给出的结果。我找到了此链接,并且看到了需要在数据上添加的elasticsearch文档。我的问题是如何在当前情况下在数据上添加映射?还是有更好的方法呢? 问题答案: 删除现有索引 删除现有的河流配置索引 创建映射到索引 完成这些步骤后,将river插件配置同步mong

  • 问题内容: 我使用ES v 1.7。ES仅在“命中”部分返回_score,但是我对“命中”不感兴趣,我需要 使用_score 从响应的“聚合”部分中 获取数据 。为什么ES会喜欢这样,以及如何解决? Requset: 响应: 问题答案: 由于您正在使用排序,因此您需要为要计算的分数显式设置“ track_scores ”。 例:

  • 问题内容: 我有两个具有以下映射的索引(我将简化它们的映射): 1)AccountType映射: 2)ProductType映射: 现在,我有几件事需要弄清楚: 1)首先,有一个索引是一个好主意,在我的情况下是帐户,并且产品是嵌套对象,但是在这里每次我要更新/添加新产品时,我都必须重新索引(更新)整个帐户文件? 2)我的第二个问题是:我想具有搜索功能,因此,如果用户通过在文本框中键入内容进行搜索,

  • 问题内容: 我想在字段上使用stats或extended_stats聚合,但是找不到完成此操作的任何示例(即,似乎只能将聚合与实际文档字段一起使用)。 是否有可能计算出“元数据”在ElasticSearch查询响应每个命中字段请求集合(例如,,,,等等)? 我假设答案是“否”,因为未对类似字段进行索引… 问题答案: 注意:就最新版本的Elasticsearch而言,原始答案现在已过时。使用Groo

  • 我有一个要求,以提供功能,将允许用户搜索通过许多不同的领域元素,并看到结果作为组合列表。所以在UI中,他只需要填充一个文本字段,然后检索结果。 为了可视化,假设我在域中有3个实体: 现在我想我可以达到这样的要求: 但是当调用第二个函数--负责返回实际文档的函数时,会引发以下异常: 无法标识索引名称。GlobalSearchDTO不是文档。确保document类被@document(indexnam

  • 问题内容: 我正在使用Elasticsearch构建URL索引。 我将一个URL提取为3个部分,分别是“域”,“路径”和“查询”。 例如:将分为 当我想在索引中部分搜索域时出现问题,例如“ user = who”或“ ing.com”。 甚至在索引时没有使用“ Analyzer”时,是否可以使用“ Analyzer”? 如何基于分析仪进行部分搜索? 非常感谢你。 问题答案: 2种方法: 1.通配符