Elasticsearch中的整数打印为字符串

时间:2017-01-17 21:09:28

标签: elasticsearch elasticsearch-2.0

我正在使用Elasticsearch 2.4。用一个整数字段声明索引模板后:

curl -XPUT 'localhost:9201/_template/template_1?pretty' -d'
{
  "template": "te*",
  "mappings": {
    "type1": {
      "properties": {
        "aaa": {
          "type": "integer"
        }
      }
    }
  }
}
'

并将数字为字符串

的文档放入此索引
curl -XPUT 'localhost:9201/template_1/type1/1?pretty' -d'
{
    "aaa" : "3"
}
'

我收到的是搜索结果:

curl -XGET 'http://localhost:9201/template_1/_search?pretty=true?q=*:*'
...
    "hits" : {
        "total" : 1,
        "max_score" : 1.0,
        "hits" : [ {
          "_index" : "template_1",
          "_type" : "type1",
          "_id" : "1",
          "_score" : 1.0,
          "_source" : {
            "aaa" : "3"
          }
        } ]
      }

为什么aaa字段不打印为索引模板中声明的整数(不带引号)?这个字段肯定是整数,因为当我尝试将一些字符分配给aaa时,会有一个异常。但是这个搜索结果看起来很混乱,我不知道Elasticsearch是否将隐式转换为整数。

1 个答案:

答案 0 :(得分:1)

_source字段包含原始文档。在处理过程中,Elasticsearch会自动将字段的值转换为整数,然后转换为索引。因此索引包含值的整数表示,而原始文档包含字符串值。