Elasticsearch:根据 _score 计算位置字段

时间:2021-06-03 01:39:04

标签: elasticsearch

我需要在我的 Elasticsearch 搜索结果中添加一个位置/序号字段,相对于按 _score 排序,而不管实际结果是如何排序的。

目前,我只按 _score 对文档进行排序。所以,我可以在调用代码中计算这个位置/序号。 (即,第一个结果始终是位置 #1,第二个结果是 #2,第 n 个结果是 #n,等等)这很简单:

  Position, First, Last, City, State (Score)
  1, John, Smith, Memphis, TN  (_score: 0.9)
  2, Jane, Doe, Atlanta, GA  (_score: 0.8)
  3, James, Wilson, San Francisco, CA  (_score: 0.6)
  4, Jeff, Smith, Dallas, TX  (_score: 0.5)
  5, Kevin, Richards, Austin, TX  (_score: 0.4)

但是,我现在有按其他字段排序的需求,但我仍然需要知道基于_score排序的相对位置。例如,如果我在上面的例子中按城市排序,我仍然需要像按分数排序一样计算位置:

  Position, First, Last, City, State (Score)
  2, Jane, Doe, Atlanta, GA  (_score: 0.8)
  5, Kevin, Richards, Austin, TX  (_score: 0.4)
  4, Jeff, Smith, Dallas, TX  (_score: 0.5)
  1, John, Smith, Memphis, TN  (_score: 0.9)
  3, James, Wilson, San Francisco, CA  (_score: 0.6)

为了在不从 Elasticsearch 中提取所有结果并在调用代码中进行我自己的排序(这是不可行的)的情况下执行此操作,我需要以某种方式将该值的计算转移到 Elasticsearch。

在 Elasticsearch 中是否有一种机制可以做到这一点,但我忽略了这一点?

0 个答案:

没有答案