Elasticsearch,为什么添加Element总是为null

时间:2017-08-14 07:52:00

标签: elasticsearch elasticsearch-painless

我有一个Elasticsearch-DB,想要将元素(字符串)添加到数组中。在这里讨论https://discuss.elastic.co/t/append-to-existing-field/16423/2后,我建立了一个玩具模型。 我初始化:

curl -XPOST "http://localhost:9200/t/t/1/" -d' 
{ 
"hobbies" : ["a", "b"] 
}' 

并使用

更新数组
curl -XPOST "http://localhost:9200/t/t/1/_update" -d' 
{ 
"script" : "ctx._source.hobbies.add(params.hobby)", 
"params" : { 
"hobby" : "c" 
} 
}'

不幸的是,更新的结果总是" null"而不是" c":

curl -XGET 'http://localhost:9200/_search?q=_id:"1"&pretty'

{
  "took" : 29,
  "timed_out" : false,
  "_shards" : {
    "total" : 20,
    "successful" : 20,
    "failed" : 0
  },
  "hits" : {
    "total" : 1,
    "max_score" : 1.0,
    "hits" : [
      {
        "_index" : "t",
        "_type" : "t",
        "_id" : "1",
        "_score" : 1.0,
        "_source" : {
          "hobbies" : [
            "a",
            "b",
            null,
            null,
            null
          ]
        }
      }
    ]
  }
}

我做错了什么?

1 个答案:

答案 0 :(得分:1)

您的user.rb结构不正确,应该是这样的:

script