指示elasticsearch返回不同类型的随机结果

时间:2016-12-08 15:50:05

标签: elasticsearch

我在ES中有一个索引,比如3种类型A,B,C。每种类型可容纳1000种产品。当用户进行没有评分的查询时,ES首先返回A中的所有结果,然后全部返回B,然后全部返回C.

我需要的是提供3种类型的混合结果。

我调查了随机得分,但这并不是我需要的。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

你真的需要一个类型的随机性或简单的3个结果吗?通过顶部命中聚合可以实现每种类型的三个结果。首先按 _type 字段进行汇总,然后应用热门点击聚合:

{
  "query": {
    "function_score": {
      "query": {
        "match_all": {
        }
      },
      "random_score": {
        "seed": 137677928418000
      }
    }
  },
  "aggs": {
    "all_type": {
      "terms": {
        "field": "_type"
      },
      "aggs": {
        "by_top_hit": {
          "top_hits": {
            "size": 3
          }
        }
      }
    }
  }
}

编辑:我添加了随机评分,以获得随机结果,我认为为每个 _type 获取特殊数量的文档很困难,解决方案可能是从所有 _type获得足够的字段。