我需要在我的 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 中是否有一种机制可以做到这一点,但我忽略了这一点?