我想为现有查询添加功能。基本上,我运行一个查询,返回1000个文档。这些文档都具有相同的结构,只是某些字段的值有所不同。我想要的不仅是得到完整的列表结果,还要计算具有X值Y的字段X有多少结果,具有相同Z值Z的字段X有多少结果等等...
基本上获得所有结果+ 4或5个“计数”,它们在某种程度上类似于SQL的“group by”。
这样做的目的是允许对数据库中的所有客户端进行全文搜索(不进行过滤),同时显示其中有多少是 Activity 客户端,过去的客户端,潜在客户等。
有什么方法可以执行此操作而无需运行其他/单独的查询?
与答案一起编辑:
聚合是必经之路。这是我的操作方式,它是如此简单明了,以至于我期望更加艰辛!
{
"query": {
"term": {
"_type":"client"
}
},
"aggregations" : {
"agg1" : {
"terms" : {
"field" : "listType.typeRef.keyword"
}
}
}
}
请注意,它甚至在术语列表中,而不是单个字段中,这就是多么容易!
最佳答案
我相信您正在寻找的是aggregation query。
文档应该足够清晰,但是如果您遇到困难,请给我们您的ES查询,我们将在此为您提供帮助。
关于elasticsearch - 嵌套计数查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42118045/