ElasticSearch 学习
es 大致结构
{
"track_total_hits": true, //获取 query 里面查询到的总条数
"query":{},//查询语句筛选条件
"aggs":{},//管道
"sort":[],//排序
"_source":[],//字段筛选
"size":0,//查询的大小
"from":0//从哪里查
}
关于 query
match_phrase 与 match
match_phrased 必须要包含查询的词组,math 可以包含查询的词组也可以将词组拆分查询
terms 与 term
term (精确值查找)
term 查询, 可以用它处理数字( numbers )、布尔值( Booleans )、日期( dates )以及文本( text )
trems (查找多个精确值)
terms 是 包含( contains ) 操作,而非 等值( equals )
其中 country_number_id 需要使用.keyword
{
"terms": {
"country_number_id.keyword": [
"CN",
"HK",
"IN",
"JP",
"KR",
"MO"
]
}
}
重点 aggs
返回数据 是从 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"
]
}
}
}
}
}
}
关于 aggs 的疑惑
多个字段聚合的时候怎么做排序,比如这边用 country_number_id 和 category_number_id 聚合,使用 sum 来的 revenue 做一个排序,但是实际是 country_number_id 大桶里面包含小桶,小桶里面可以根据 revenue 排序,无法做一整个排序
多个字段聚合的时候将两个字段嵌套顺序替换,查出来的数据量变了,其他筛选条件什么都没变
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).
当然,1 这个排序问题也可以在 country 下一级,category 平级再加一个对 revenue 的 sum agg,让 coutry 的 order 按这个新加的来。
最近要给公司开发一个小(袖珍)网站,高峰访问不会超过五个人,而且大部分时间都是完全空闲无人访问的状态。 所有的构想 实施 后期维护都是我 最大的受益者也是我,域名也买在我的名下…
老人家用智能手机有几年了,但这个月开始,频繁被扣话费,基本都是啥流量包,咪咕音乐包之类的。过程其实就是很简单,老人家玩象棋,下载了一个,是我下载的,我也简单看了下,没发现啥问题…
我现在的问题 如何定位 java 程序执行时间长的原因? 现在的问题是有一个定时程序执行一遍需要 1500 分钟,我需要减少执行时间, 而这个程序代码量也很大(多线程去遍历…
合速度