首页 > 解决方案 > 根据 Elasticsearch 中的嵌套字段值按表达式排序

问题描述

我有一个索引,其映射如下

{
  "mappings": {
  "properties": {
    "content": {
      "type": "text"
    },
    "entities": {
      "type": "nested",
      "properties": {
        "name": {
          "type": "text"
        },
        "score": {
          "type": "double"
        }
      }
    }
  }
}

}

因此,索引由具有文本 ( content) 和嵌套列表的文档组成entities,每个文档都有一个name和一个score说明,例如,一个实体在文档中被提及的频率。当我构建一个查询时,我可能对多个实体感兴趣,比方说,( A and B or C),这意味着我搜索具有AandB或只是的文档C(并相应地构建我的query)。此外,我尝试实现的是应用相同的排序规则。我的意思是(假设我对我的文档进行降序排序)在上述情况下的排名分数应该计算为max( min(a.score, b.score), c.score). 因此,简而言之, anyand被转换为min,而 anyor变成max. 假设构建该表达式不是问题,并且超出了我的问题范围。我的问题是如何将该表达式与 mins 和 maxes 映射到sorta 的一部分query?没有脚本可以实现吗?如果没有,我该如何编写脚本?

提前致谢

标签: elasticsearch

解决方案


推荐阅读