【发布时间】:2019-07-10 02:18:57
【问题描述】:
我有一些这样的文档:
{
"text": "sample - very high relevancy",
"myField": "a1"
},
{
"text": "sample - less relevancy",
"myField": "a2"
},
{
"text": "sample - high relevancy",
"myField": "a1"
},
{
"text": "sample - very less relevancy",
"myField": "a3"
}
我已经写了一个关于搜索相似性和东西的查询...我试图对它进行排序,就像从来没有两个相同的 myField 值彼此相邻出现一样。
我希望 myField 的所有不同值出现在结果顶部,然后是重复值。
我正在寻找的是一个高级排序查询
如果字段myField 已出现在结果中,则降低文档的分数。
根据我的例子,我希望我的结果是:
{
"text": "sample - very high relevancy",
"myField": "a1"
},
{
"text": "sample - less relevancy",
"myField": "a2"
},
{
"text": "sample - very less relevancy",
"myField": "a3"
},
{
"text": "sample - high relevancy",
"myField": "a1"
},
{
"text": "sample - extremely less relevancy",
"myField": "a5"
}
结果底部出现了高相关性字段,因为 a1 值已经出现在顶部,而其他字段 a2 a3 对我来说更重要。
此外,如果一个文档与我们的查询无关紧要,无论它的myField 值是否不出现,都应该位于最底部。
【问题讨论】:
标签: elasticsearch elastic-stack elasticsearch-aggregation