想要在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"
  }
}