在ElasticSearch Clasterized得分(Clasterized scoring i

2019-10-29 02:34发布

比方说,我在ElasticSearch 6.2有一些复杂的查询,它可以返回下一个点击:

"hits" : [
  {
    ...
    "_score" : 100,
    "_source" : { ... }
    ...
  },
  {
    ...
    "_score" : 99,
    "_source" : { ... }
    ...
  },
  {
    ...
    "_score" : 50,
    "_source" : { ... }
    ...
  },
  {
    ...
    "_score" : 49,
    "_source" : { ... }
    ...
  }
]

还是同样的查询可以返回:

"hits" : [
  {
    ...
    "_score" : 10,
    "_source" : { ... }
    ...
  },
  {
    ...
    "_score" : 9.9,
    "_source" : { ... }
    ...
  },
  {
    ...
    "_score" : 2,
    "_source" : { ... }
    ...
  },
  {
    ...
    "_score" : 1,
    "_source" : { ... }
    ...
  }
]

正如你所看到分数的分布是不均匀的,并有接近得分的项目组。 我需要包括对结果从顶部组项目设置。 我不能提供合理的min_score ,因为不同的查询参数的绝对分数值可以不同非常多。 有没有什么办法让不考虑实际绝对值的弹性回顶进球组? 先感谢您。

Answer 1:

据我所知Elasticsearch不提供一种方式来切断基于相对分数一些命中。 为了做到这一点,你应该提前知道哪个可以根据搜索查询本身和对指数的当前状态是非常不同的最大比分。 一个不是很优雅的方式实现这一目标是摆脱限制的结果通过一个的大小的第一个请求一个最高分,然后用相对min_score在第二个请求筛选出的结果。 在另一方面同样可以通过在客户端手动过滤所述常规查询的结果来实现。



文章来源: Clasterized scoring in ElasticSearch