想要在elasticsearch的点击部分获得不同的记录吗
我想按照“部门号”获取所有不同的记录。 请检查以下索引数据:(它是虚拟数据。) 我想要下面的输出想要在elasticsearch的点击部分获得不同的记录吗,
Warning: implode(): Invalid arguments passed in /data/phpspider/zhask/webroot/tpl/detail.html on line 45
,,我想按照“部门号”获取所有不同的记录。 请检查以下索引数据:(它是虚拟数据。) 我想要下面的输出 {'departmentNo': 1, 'departmentName': 'Food', 'departmentLoc': "I1", "departmentScore": "5", "employeeid" : 1, "employeeName": "vijay", ...}
{'departmentNo': 1, 'departmentName': 'Food', 'departmentLoc': "I1", "departmentScore": "5", "employeeid" : 1, "employeeName": "vijay", ...}
{'departmentNo': 2, 'departmentName': 'Non-Food', 'departmentLoc': "I2", "departmentScore": "6", "employeeid" : 3, "employeeName": "ajay", ...}
我试图在点击部分获取数据。但是没有找到答案。
所以我愤愤不平地试了一下。用于下面的查询
{
"size": 0,
"aggs": {
"Group_By_Dept": {
"terms": {
"field": "departmentNo"
},
"aggs": {
"group_docs": {
"top_hits": {
"size": 1
}
}
}
}
}
}
我通过上面的查询得到了数据。但是我需要所有不同的数据,它们应该支持分页+排序。
在弹性6.0中,我们可以使用bucket\u排序,但我使用的是5.6.7。因此,我不能使用bucket\u排序
那么我可以用其他方法吗。?
如果我能在hits的部分获得数据,那就好了
(我不想更改我的索引映射。实际上,我在这里添加了虚拟映射。但用例是相同的。)您可以通过使用:
这将为该字段中的每个重复值只留下一个文档。您可以控制将使用标准排序的文档(即,将返回折叠文档中排序值最高的文档)
请注意,还有一个称为“内部点击”的附加功能,您可能希望在将来使用它-请注意,它会增加文档获取次数并对性能产生负面影响。感谢您的回复@但分页不起作用。如果我有19份文件,其中有15份是不同的。然后当我从=0和size=5开始时,它应该返回5。当我执行from=1,size=5时,它应该返回接下来的5条不同的记录。(但它没有返回)我无法理解分页如何与collapse@user3432036
from
不是页码,它是从开始的偏移量。如果您需要第2页的大小为5,则需要将from
设置为(页码-1)*大小,即5。我没有使用默认值。我只是在用折叠。因此,它会对性能产生任何影响。因为在我的申请中,我有一百万条记录。所以我只是担心性能。有没有办法得到崩溃文档的数量。
{
"size": 0,
"aggs": {
"Group_By_Dept": {
"terms": {
"field": "departmentNo"
},
"aggs": {
"group_docs": {
"top_hits": {
"size": 1
}
}
}
}
}
}
{
"query": { ... },
"from": 153,
"size": 27,
"collapse": {
"field": "departmentNo"
}
}