elasticsearch聚合结果为0

时间:2015-08-06 06:23:28

标签: elasticsearch

以下是我对elasticsearch的查询:

GET index/_search
{
   "size": 0,
   "query": {
      "filtered": {
         "query": {
            "match_all": {}
         },
         "filter": {
            "and": [
               {
                  "term": {
                     "id_1": "xx"
                  }
               },
               {
                  "term": {
                     "level": "level2"
                  }
               },
               {
                  "or": [
                     {
                        "term": {
                           "type": "yyy"
                        }
                     },
                     {
                        "term": {
                           "type": "zzzz"
                        }
                     }
                  ]
               }
            ]
         }
      }
   },
   "aggs": {
      "variable": {
         "stats": {
            "field": "score"
         }
      }
   }
}

但是结果如下:

{
   "took": 2,
   "timed_out": false,
   "_shards": {
      "total": 5,
      "successful": 5,
      "failed": 0
   },
   "hits": {
      "total": 68,
      "max_score": 0,
      "hits": []
   },
   "aggregations": {
      "variable": {
         "count": 30,
         "min": 0,
         "max": 0,
         "avg": 0,
         "sum": 0
      }
   }
}

为什么min,max等为0.但是得分的值是(0.18,0.25等)。同样在映射中,得分类型很长。请帮我解决这个问题。提前谢谢。

编辑:

索引中的

值:

"score": 0.18

单个文件:

{
            "_index": "index",
            "_type": "ppppp",
            "_id": "n0IiTEd2QFCnJUZOSiNu1w",
            "_score": 1,
            "_source": {
               "name_2": "aaa",
               "keyid": "bbbb",
               "qqq": "cccc",
               "level": "level2",
               "type": "kkk",
               "keytype": "Year",
               "org_id": 25,
               "tempid": "113",
               "id_2": "561",
               "name_1": "xxxxx",
               "date_obj": [
                  {
                     "keyid": "wwwww",
                     "keytype": "Year",
                     "value": 21.510617952000004,
                     "date": "2015",
                     "id": "ggggggg",
                     "productid": ""
                  },
                  {
                     "keyid": "rrrrrr",
                     "keytype": "Year",
                     "value": 0.13,
                     "date": "2015",
                     "id": "iiiiii",
                     "productid": ""
                  }
               ],
               "date": "2015",
               "ddddd": 21.510617952000004,
               "id_1": "29",
               "leveltype": "nnnn",
               "tttt": 0.13,
               "score": 0.13    ------------------->problem           
            }
         }

映射:

curl -XPUT ip:9200/index -d '{   
    "mappings" : {
        "places" : {            
            "properties" : {
                "score" : { "type" : "float"}                
            }
        }
}
}'

1 个答案:

答案 0 :(得分:1)

修复应该像将score字段的类型更改为float(或double)而不是long一样简单。 long是一个整数类型,0.18将被引导为0。

"score" : {
    "type" : "float",
    "null_value" : 0.0
}

请注意,在进行映射更改后,您需要重新编制数据索引。