{
"track_total_hits": true, //获取 query 里面查询到的总条数
"query":{},//查询语句筛选条件
"aggs":{},//管道
"sort":[],//排序
"_source":[],//字段筛选
"size":0,//查询的大小
"from":0//从哪里查
}
match_phrased 必须要包含查询的词组,math 可以包含查询的词组也可以将词组拆分查询
来源:https://blog.csdn.net/liuxiao723846/article/details/78365078
term 查询, 可以用它处理数字( numbers )、布尔值( Booleans )、日期( dates )以及文本( text )
terms 是 包含( contains ) 操作,而非 等值( equals )
其中 country_number_id 需要使用.keyword
{
"terms": {
"country_number_id.keyword": [
"CN",
"HK",
"IN",
"JP",
"KR",
"MO"
]
}
}
返回数据 是从 aggregations 中获取
示例:
"aggs": {
"country_number_id": {
"terms": {
"field": "country_number_id.keyword",
"size": 10000 //这里指的是需要返回 country_number_id 的桶的个数,但不代表是查询的数据量
},
"aggs": {
"category_number_id": {
"terms": {
"field": "category_number_id.keyword",
"size": 10000,//同上,不过是 category_number_id
"order": {
"revenue": "desc"//这个字段用的是下面 sum 聚合的 revenue
}
},
"aggs": {
"revenue": {
"sum": {//sum,avg,min,max
"field": "revenue"
}
},
"downloads": {
"sum": {
"field": "downloads"
}
},
"top": {//随便取名
"top_hits": {//关键字
"size": 1,//category_number_id 下面桶里数据的条数
"_source": [//里面命中数据字段筛选
"os",
"revenue",
"country_number_id",
"category_number_id",
"category_name",
"country_name",
"downloads"
]
}
}
}
}
}
}
1
BJL 2021-08-19 11:26:09 +08:00
1.后续代码处理
2.如果你说的是上面的 country 和 category,可能的原因有一个,terms 聚合在下面这种情况会有误差 This means that if the number of unique terms is greater than size, the returned list is slightly off and not accurate (it could be that the term counts are slightly off and it could even be that a term that should have been in the top size buckets was not returned). |
2
BJL 2021-08-19 11:54:44 +08:00
当然,1 这个排序问题也可以在 country 下一级,category 平级再加一个对 revenue 的 sum agg,让 coutry 的 order 按这个新加的来
|