2016-05-01 7 views
0

現在、elasticsearchの配列に値を追加する方法について少し苦労しています。Elasticsearchの配列に追加

文書は、このようなものになります。

{ 
    "took": 11, 
    "timed_out": false, 
    "_shards": { 
    "total": 5, 
    "successful": 5, 
    "failed": 0 
    }, 
    "hits": { 
    "total": 1, 
    "max_score": 1, 
    "hits": [ 
     { 
     "_index": "iethreads", 
     "_type": "thread", 
     "_id": "AVRk6WRMU5h_y_zwo4s0", 
     "_score": 1, 
     "fields": { 
      "links": [ 
      "[\"https://somelink123.net/thread-714222&page=1\", \"https://somelink123.net/thread-714222&page=2\", \"https://somelink123.net/thread-714222&page=3\", \"https://somelink123.net/thread-714222&page=4\"]" 
      ] 
     } 
     } 
    ] 
    } 
} 

を、私は、次の更新クエリ

POST _update 
{ 
    "script" : "ctx._source.links+=new_posts", 
    "params" : { 
    "new_posts":"blabliblub" 
    } 
} 

を実行し、私はこの取得:これがどのように見える私のためにそう

{ 
    "took": 11, 
    "timed_out": false, 
    "_shards": { 
    "total": 5, 
    "successful": 5, 
    "failed": 0 
    }, 
    "hits": { 
    "total": 1, 
    "max_score": 1, 
    "hits": [ 
     { 
     "_index": "iethreads", 
     "_type": "thread", 
     "_id": "AVRk6WRMU5h_y_zwo4s0", 
     "_score": 1, 
     "fields": { 
      "links": [ 
      "[\"https://somelink123.net/thread-714222&page=1\", \"https://somelink123.net/thread-714222&page=2\", \"https://somelink123.net/thread-714222&page=3\", \"https://somelink123.net/thread-714222&page=4\"]blabliblub" 
      ] 
     } 
     } 
    ] 
    } 
} 

を配列は文字列のように扱われ、文字列が追加されます。これは私が望むものではありません。

"blabliblub"を新しい要素として配列に追加するにはどうすればよいですか?

答えて

2

実際にはlinksフィールドに配列の代わりに文字列としての要素が1つあるようです。更新が成功するには、構造は次のようにする必要があります。

"fields": { 
     "links": [ 
     "https://somelink123.net/thread-714222&page=1", 
     "https://somelink123.net/thread-714222&page=2", 
     "https://somelink123.net/thread-714222&page=3", 
     "https://somelink123.net/thread-714222&page=4" 
     ] 
    }