我有一个由引用其他注释的注释组成的数据集。
{id:"aaa", note: "lorem ipsum", references: ["ccc"]},
{id:"bbb", note: "lorem ipsum", references: ["aaa","ccc"]},
{id:"ccc", note: "lorem ipsum", references: ["bbb"]},
Run Code Online (Sandbox Code Playgroud)
我希望弹性搜索使用引用来加权结果,因此在这种情况下,如果我搜索,lorem我应该返回 id "ccc",因为它具有最多的引用。根据他们的文档,他们的图形解决方案正是这样做的,但我也看到了他们做类似事情的例子。
但是没有解释这是如何映射到索引的。所以我的问题是:如何设置使用引用(索引)的 ES 索引?
其他答案给出了一些线索,但随后@7379490在另一个频道中提供了答案:
没有办法直接在 ES 中执行此操作。有两种可能的解决方案:预先计算引用并通过将新值映射到文档将它们传递到 ES 中。
或者聚合并使用聚合对响应进行排序:
{
"query": {
"function_score": {
"query": {
"match": {
"note": "lorem"
}
},
"aggs": {
"references":{
"terms" : {
"field" : "references.keyword",
"order": { "_count": "desc" }
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
86 次 |
| 最近记录: |