绊脚石乃是进身之阶。

elasticsearch 文件句柄问题

elastic 回复了问题 • 3 人关注 • 2 个回复 • 5074 次浏览 • 2016-03-24 10:31 • 来自相关话题

es索引模版配置不当导致的aggs聚合查询字段显示错误的问题

Max 发表了文章 • 0 个评论 • 8776 次浏览 • 2016-03-18 16:51 • 来自相关话题

今天在es中对http日志的状态码status进行aggs搜索出现字段内容显示不正常的问题,记录过程:

http日志的情况:
1、http日志从logstash写入es时,状态码配置为status,其内容为 200 ,302 ,400 ,404等。
2、使用kibana对该日志的索引进行查询,在discover页面中显示的status内容跟logstash的内容一致,是正常的。

出现问题的场景:
(我这里使用的是kibana的sense插件进行的查询,如果直接使用curl python-ES也是一样的)
查询该索引:
POST http-2016.03.18/_search
{
  "fields": ["status"],
          "query":{
            "bool":{
              "must": [
                {
                  "range" : {
                    "@timestamp" : {"gte" : "now-5m"}
                  }
                }
              ]
            }
          },
          "_source": "false",
          "size": 0,
          "aggs": {
            "status_type": {
              "terms":{"field":"status"}
            }
          }
}

查询返回的结果中aggregations部分的内容:
"aggregations" : {
    "status_type" : {
      "doc_count_error_upper_bound" : 0,
      "sum_other_doc_count" : 0,
      "buckets" : [ {
        "key" : -56,
        "doc_count" : 376341
      }, {
        "key" : 46,
        "doc_count" : 51439
      }, {
        "key" : 45,
        "doc_count" : 5543
      }, {
        "key" : 48,
        "doc_count" : 1669
      }, {
        "key" : -108,
        "doc_count" : 1068
      }, {
        "key" : -50,
        "doc_count" : 11
      }, {
        "key" : -109,
        "doc_count" : 8
      }, {
        "key" : -112,
        "doc_count" : 4
      } 

寻找原因:
起先先去掉了查询的aggs部分,单独查询query的内容:
POST http-2016.03.18/_search
{
  "fields": ["status"],
          "query":{
            "bool":{
              "must": [
                {
                  "range" : {
                    "@timestamp" : {"gte" : "now-5m"}
                  }
                }
              ]
            }
          }
}

返回的结果中,hits显示的status字段内容是正常的:
"hits": {
    "total": 1242104,
    "max_score": 1,
    "hits": [
      {
        "_index": "http-2016.03.18",
        "_type": "log",
        "_id": "AVOI3EiwidwPAhB1e7gQ",
        "_score": 1,
        "fields": {
          "status": [
            "200"
          ]
        }
      }
    ......

然后查询了http索引的索引信息和模版配置:
GET /http-2016.03.18/
GET /_template/http
发现其中http的status的属性type类型的内容是byte :
        "properties": {
          "@timestamp": {
            "type": "date",
            "format": "strict_date_optional_time||epoch_millis"
          },
        ......
        ......
          "status": {
            "type": "byte"
          },
        ......
        ......

原因:
在aggs查询中发现了status字段显示错误的情况,status的type类型在es模版中定义成了byte类型,当status的值超过127后将出现溢出的情况,因此修改为short后,恢复了正常。
(对于http的状态码status,其type类型使用short已经足够了,如果使用integer,long或默认的string类型也是可以的,这里影响的是存储空间占用的大小。)
 
 

elasticsearch nested 会增加doc数目吗? 原理是什么

helloes 回复了问题 • 2 人关注 • 1 个回复 • 6154 次浏览 • 2016-03-18 11:42 • 来自相关话题

请教各位,能否指导下,索引模板如何设置,可以让索引按时间命名,多谢!

stab 回复了问题 • 2 人关注 • 2 个回复 • 5644 次浏览 • 2016-03-22 10:19 • 来自相关话题

Elasticsearch自定义索引模板一段时间后消失的问题

stab 回复了问题 • 2 人关注 • 1 个回复 • 4833 次浏览 • 2016-03-22 10:20 • 来自相关话题

师兄我能加你QQ不,我安装ELK不成功。

回复

michael 发起了问题 • 1 人关注 • 0 个回复 • 5124 次浏览 • 2016-03-17 09:07 • 来自相关话题

请教索引按时间命名的问题!

stab 回复了问题 • 2 人关注 • 1 个回复 • 5693 次浏览 • 2016-03-16 16:38 • 来自相关话题

关于es集群入口,请教一下@!

coolloves 回复了问题 • 2 人关注 • 3 个回复 • 6226 次浏览 • 2016-03-24 09:49 • 来自相关话题

ES 两节点集群,数据不一致

alexzhang 回复了问题 • 3 人关注 • 4 个回复 • 8594 次浏览 • 2016-03-23 13:24 • 来自相关话题

JDBC importer for Elasticsearch导入没有任何反应

Xargin 回复了问题 • 2 人关注 • 1 个回复 • 6046 次浏览 • 2016-03-12 20:42 • 来自相关话题

elasticsearch的实时搜索性能为什么比solr好

Xargin 回复了问题 • 3 人关注 • 2 个回复 • 10020 次浏览 • 2016-03-12 20:46 • 来自相关话题

用elasticsearch做可靠性存储靠谱吗?

helloes 回复了问题 • 4 人关注 • 2 个回复 • 8503 次浏览 • 2016-03-24 10:47 • 来自相关话题

percolator接口里的agg怎么用?

medcl 回复了问题 • 2 人关注 • 1 个回复 • 4873 次浏览 • 2016-03-11 13:36 • 来自相关话题

es2.2在ssd上的index性能问题

helloes 回复了问题 • 3 人关注 • 2 个回复 • 5399 次浏览 • 2016-03-11 00:54 • 来自相关话题

JestClient连接elasticserach cluster,遇到节点宕机,怎么自动避开

linepole 回复了问题 • 4 人关注 • 2 个回复 • 6255 次浏览 • 2017-11-17 18:08 • 来自相关话题