求教:一个索引下的每个文档都有唯一id,用Java进行查询时如何去重除id外的其他字段

匿名 | 发布于2019年05月15日 | 阅读数:142

系统提示:这个人太懒了,什么问题描述都没有写!

已邀请:

weizijun - elasticsearch fan

赞同来自:

dsl带上 "_source": false

Ombres

赞同来自:

你是要这样效果吗?以下为示例
              name          category           score
doc1      广西香蕉         香蕉                   1.0
doc2      海南香蕉         香蕉                  1.2
doc3      红苹果            苹果                  2.1
doc4      青苹果             苹果                  1.4

现有以上四个文档,现在要求查询所有结果,按照category去重,score高的优先显示,查询结果:
doc2      海南香蕉         香蕉                  1.2
doc3      红苹果            苹果                  2.1
 
如果是这样的需求,可以使用Field Collapsing
一定注意对于折叠字段有强制要求,必须为单值的keyword或者数值类型,而且必须开启doc_values。
以下是简单实现的示例代码:
{
"query": {
"match_all": {}
},
"sort":[
{"score":"desc"}
],
"collapse": {
"field": "category"
}
}

要回复问题请先登录注册