使用netstat -lntp来看看有侦听在网络某端口的进程。当然,也可以使用 lsof。

es7启动报错

Elasticsearchcxxbz 回复了问题 • 2 人关注 • 2 个回复 • 3154 次浏览 • 2019-09-25 12:04 • 来自相关话题

聚合元数据——对聚合结果进行打标签

Elasticsearchziyou 发表了文章 • 2 个评论 • 2567 次浏览 • 2019-09-23 19:51 • 来自相关话题

背景

在我们的项目中需要对聚合后的结果进行二次的terms的聚合。实际需求就是有n个模型,需要统计每个模型在每段时间的调用次数,然后需要查询指定m个模型的调用总次数。我们要为每个模型建立一个索引,然后为每个模型查一次这段时间内的使用次数。

注:我们记录的值只能从结果中拿取。

实现过程

第一次设计

每个模型在第一次设计的时候是两个字段,【调用次数】、【错误次数】,使用以下语句:
JSON<br /> {<br /> "aggs": {<br /> "error": {<br /> "filters": {<br /> "filters": {<br /> "error": {<br /> "query_string": {<br /> "query": "state:-1",<br /> "analyze_wildcard": true,<br /> "default_field": "*"<br /> }<br /> }<br /> }<br /> }<br /> }<br /> },<br /> "size": 0,<br /> "query": {<br /> "bool": {<br /> "must": [<br /> {<br /> "bool": {<br /> "should": [<br /> {<br /> "match_phrase": {<br /> "li": "D003" //说明这是一次模型调用<br /> }<br /> }<br /> ],<br /> "minimum_should_match": 1<br /> }<br /> },<br /> {<br /> "match_phrase": {<br /> "modelId..keyword": {<br /> "query": "modelId01"<br /> }<br /> }<br /> },<br /> {<br /> "range": {<br /> "x_st": {<br /> "gte": "now/h-1h-10s",<br /> "lte": "now/h-10s",<br /> "format": "epoch_millis"<br /> }<br /> }<br /> }<br /> ]<br /> }<br /> }<br /> }<br />
结果为:
JSON<br /> {<br /> "took" : 215,<br /> "timed_out" : false,<br /> "_shards" : {<br /> "total" : 1095,<br /> "successful" : 1095,<br /> "skipped" : 1053,<br /> "failed" : 0<br /> },<br /> "hits" : {<br /> "total" : 0,<br /> "max_score" : 0.0,<br /> "hits" : [ ]<br /> },<br /> "aggregations" : {<br /> "error" : {<br /> "buckets" : {<br /> "error" : {<br /> "doc_count" : 0<br /> }<br /> }<br /> }<br /> }<br /> }<br />
解析后保存:
JSON<br /> {"@timestamp":"2019-09-23T12:23:23.333","count":0,"error":0}<br />
这种情况可以统计每个模型在某段时间内的调用次数,使用索引名来区分每个model。但是在统计指定m个模型的时候就不行了,使用索引名来查询的时候由于是指定m个,前缀不能使用* 匹配,并且不能罗列所有m个索引来查询,就无法达到统计的效果。
第一次设计因为不能在结果中记录模型ID导致不能统计指定的m个模型的数量,以失败告终。

第二次设计

既然需要在统计结果中记录模型ID,那就使用terms聚合来进行操作,先使用模型ID过滤一下数据,然后使用聚合唯一的模型ID,这样就有了模型ID。查询语句如下:
JSON<br /> {<br /> "aggs": {<br /> "modelId": {<br /> "terms": {<br /> "field": "modelId.keyword",<br /> "size": 5,<br /> "order": {<br /> "_count": "desc"<br /> }<br /> }<br /> }<br /> },<br /> "size": 0,<br /> "query": {<br /> "bool": {<br /> "must": [<br /> {<br /> "match_phrase": {<br /> "modelId.keyword": {<br /> "query": "modelId01"<br /> }<br /> }<br /> },<br /> {<br /> "range": {<br /> "x_st": {<br /> "gte": "now/h-1h",<br /> "lte": "now/h",<br /> "format": "epoch_millis"<br /> }<br /> }<br /> },<br /> {<br /> "match_phrase": {<br /> "modelId.keyword": {<br /> "query": "modelId01"<br /> }<br /> }<br /> }<br /> ]<br /> }<br /> }<br /> }<br />
结果为:
JSON<br /> {<br /> "took" : 9,<br /> "timed_out" : false,<br /> "_shards" : {<br /> "total" : 140,<br /> "successful" : 140,<br /> "skipped" : 135,<br /> "failed" : 0<br /> },<br /> "hits" : {<br /> "total" : 0,<br /> "max_score" : 0.0,<br /> "hits" : [ ]<br /> },<br /> "aggregations" : {<br /> "modelId" : {<br /> "doc_count_error_upper_bound" : 0,<br /> "sum_other_doc_count" : 0,<br /> "buckets" : [ ]<br /> }<br /> }<br /> }<br />
在有模型调用的时候这个方法还好用,但是在无模型调用的时候这个返回结果就如上面的一样,是不包含任何信息的,错误次数的0和模型ID都没有了。
第二次设计因为在无模型调用的时候导致模型ID不能记录,然后也是不能实现指定m个模型的查询次数统计,也以失败告终。

第三次设计

经过两次失败的实际案例,我发现现有的知识已经不能满足需求了,我需要新的方法,我需要一个能给查询结果添加字段的方法,所以我去查询官方文档,让我找到了这个方法[聚合元数据](<a href="https://www.elastic.co/guide/en/elasticsearch/reference/6.8/agg-metadata.html"%3Ehttps://www.elastic.co/guide/en/elasticsearch/reference/6.8/agg-metadata.htm" rel="nofollow" target="_blank">https://www.elastic.co/guide/e ... a.html) 也就是对聚合结果进行打标签。
我使用第一次的设计方案,然后添加上对聚合结果打标签的方法,就可以记录一次统计值的模型ID了。
查询语句如下:
JSON<br /> {<br /> "aggs": {<br /> "error": {<br /> "filters": {<br /> "filters": {<br /> "error": {<br /> "query_string": {<br /> "query": "state:-1",<br /> "analyze_wildcard": true,<br /> "default_field": "*"<br /> }<br /> }<br /> }<br /> },<br /> "meta": {<br /> "modelId": "modelId01"<br /> }<br /> }<br /> },<br /> "size": 0,<br /> "query": {<br /> "bool": {<br /> "must": [<br /> {<br /> "bool": {<br /> "should": [<br /> {<br /> "match_phrase": {<br /> "li": "D003" //说明这是一次模型调用<br /> }<br /> }<br /> ],<br /> "minimum_should_match": 1<br /> }<br /> },<br /> {<br /> "match_phrase": {<br /> "modelId..keyword": {<br /> "query": "modelId01"<br /> }<br /> }<br /> },<br /> {<br /> "range": {<br /> "x_st": {<br /> "gte": "now/h-1h-10s",<br /> "lte": "now/h-10s",<br /> "format": "epoch_millis"<br /> }<br /> }<br /> }<br /> ]<br /> }<br /> }<br /> }<br />
查询结果为:
JSON<br /> {<br /> "took" : 88,<br /> "timed_out" : false,<br /> "_shards" : {<br /> "total" : 1095,<br /> "successful" : 1095,<br /> "skipped" : 1056,<br /> "failed" : 0<br /> },<br /> "hits" : {<br /> "total" : 0,<br /> "max_score" : 0.0,<br /> "hits" : [ ]<br /> },<br /> "aggregations" : {<br /> "error" : {<br /> "meta" : {<br /> "modelId" : "modelId01"<br /> },<br /> "buckets" : {<br /> "error" : {<br /> "doc_count" : 0<br /> }<br /> }<br /> }<br /> }<br /> }<br />
至此完成了统计需求。

总结

使用聚合元数据方法,可以对聚合的结果进行打标签,可以使用在聚合结果保存后再次进行terms聚合的时候使用,或者通过标签进行各种其他查询。

es v6.8.3 bulk 异常

Elasticsearchdoom 回复了问题 • 3 人关注 • 2 个回复 • 1681 次浏览 • 2019-09-27 21:06 • 来自相关话题

全局超时不生效

Elasticsearchlocatelli 回复了问题 • 2 人关注 • 1 个回复 • 1572 次浏览 • 2019-09-26 12:30 • 来自相关话题

Beats:Elastic beats介绍

回复

Beatsliuxg 发起了问题 • 1 人关注 • 0 个回复 • 4138 次浏览 • 2019-09-23 17:40 • 来自相关话题

生产环境的ELK版本如何升级

ElasticsearchTsukiand 回复了问题 • 3 人关注 • 2 个回复 • 4059 次浏览 • 2019-09-27 20:37 • 来自相关话题

index索引数量不能突破500个

Elasticsearchdoom 回复了问题 • 6 人关注 • 6 个回复 • 5862 次浏览 • 2019-09-27 21:10 • 来自相关话题

大神求助,我这测试ElastAlert规则老师出差报一下错误,有大神指导吗?()

回复

Elasticsearchzheniove 发起了问题 • 2 人关注 • 0 个回复 • 3378 次浏览 • 2019-09-23 14:05 • 来自相关话题

社区日报 第737期 (2019-09-23)

社区日报cyberdak 发表了文章 • 0 个评论 • 1440 次浏览 • 2019-09-23 13:10 • 来自相关话题

1、将使用elasticsearch的成本降低90-99%
http://t.cn/EKCScjC

2、Elasticsearch调优实践
http://t.cn/AincWu86

3、Elasticsearch解决问题之道——请亮出你的DSL!
http://t.cn/AincnvSQ

编辑:cyberdak
归档:https://ela.st/cn-daily-all
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup 

Es固定时间区间内的score排序

Elasticsearchdoom 回复了问题 • 3 人关注 • 1 个回复 • 1938 次浏览 • 2019-09-27 22:07 • 来自相关话题

elasticsearch7.0.0一次查询两个索引,第二个索引返回不了结果

Elasticsearchfantuan 回复了问题 • 2 人关注 • 1 个回复 • 2743 次浏览 • 2019-09-24 16:12 • 来自相关话题

search-guard-ssl被封了

Elasticsearchhsd249022043 回复了问题 • 6 人关注 • 3 个回复 • 1967 次浏览 • 2020-02-11 12:09 • 来自相关话题

logstash +mysql 输出到elasticsearch ,输出异常,返回500

Logstashdoom 回复了问题 • 2 人关注 • 2 个回复 • 2337 次浏览 • 2019-09-30 08:10 • 来自相关话题

logstash 如何截取指定字符以前的字符串作为output的文件名来用

Logstashdoom 回复了问题 • 3 人关注 • 2 个回复 • 2766 次浏览 • 2019-09-30 07:55 • 来自相关话题

多语言搜索,中文拼音+其他语言+首字母排序

Elasticsearchdoom 回复了问题 • 2 人关注 • 1 个回复 • 1915 次浏览 • 2019-09-28 05:26 • 来自相关话题