我有多个弹性文档,字段为“cityId”,“cityName”。我想计算具有特定“cityId”和“cityName”的文档的出现次数。
用于获取cityId和count的聚合查询:
GET _search
{
"aggs": {
"CityIdCount": {
"terms": {
"field": "cityId",
"size": 0
}
}
},
"query": {
"bool": {
"must": [
...........................
这是现有查询,它将结果显示为(key为cityId,doc_count为出现次数: { “关键”:40, “doc_count”:4906 },
这是我尝试获取的查询(cityId,cityName,doc_count),它将结果显示为(key为cityName,doc_count为该名称的出现次数:{ “关键”:“塔那”, “doc_count”:4906 }
GET _search
{
"aggs": {
"CityIdCount": {
"terms": {
"field": "cityId",
"field": "cityName",
"size": 0
}
}
},
"query": {
"bool": {
"must": [
..............................
我想要所有人,例如:“cityId”,“cityName”,“doc_count”。
对此有什么正确的查询?
答案 0 :(得分:1)
您不能(目前至少)以您建议的方式在多个字段的组合中执行术语聚合。您可以通过以下两种方式之一来实现:
terms
aggregation with a script。这可能对您的用例表现得足够好,但请注意您在查询时支付了性能成本。not_analyzed
字段中,例如cityIdAndName
在您的应用程序中或使用copy_to
并在此字段上使用聚合术语。这将比第一个选项执行得更好,但代价是索引更多数据。