2016-07-28 15 views
0

私のすべてのelasticsearchインデックス文書で、単一のユーザー名を置き換えたかったのです。 APIのクエリはありますか?elasticsearchですべての文書を検索して置き換えます。

複数を検索しようとしましたが見つかりませんでした。いずれかのアイデアがありますか?

私のシナリオ:

curl -XPOST 'http://localhost:9200/test/movies/' -d '{"user":"mad", "role":"tester"}' 
 
curl -XPOST 'http://localhost:9200/test/movies/' -d '{"user":"bob", "role":"engineer"}' 
 
curl -XPOST 'http://localhost:9200/test/movies/' -d '{"user":"cat", "role":"engineer"}' 
 
curl -XPOST 'http://localhost:9200/test/movies/' -d '{"user":"bob", "role":"doctor"}'

私は "テスト" とタイプ "映画" と呼ばれる指標で、上記のデータを持っています。ここで私はすべての "ボブ"の名前を "アリス"に置き換えたいと思っていました。

おかげ

+0

あなたは何をしようとしていますか?提供されたデータのインデックスを作成するサーチ?それぞれに異なるURL/HTTPメソッドの組み合わせがあります。特定のタイプ/インデックスの '-XPUT'は文書を索引付けします(既存のIDを指定すると置き換えます)。https://www.elastic.co/guide/en/elasticsearch/guide/current/index-doc.html' -XGET'特定のレコードを取得するための特定のタイプ/インデックスhttps://www.elastic.co/guide/en/elasticsearch/guide/current/get-doc.html等 –

+0

私は1つのために更新を行う方法を知っていますインデックスIDを取得して文書を作成します。しかし、インデックスIDは自動的に生成されます。すべての文書で文字列を別の文字列に置き換えたいと思っていました。 –

答えて

1

update-by-queryは、移動するための方法です。

POST /test/movies/_update_by_query 
{ 
    "script": { 
    "inline": "ctx._source.user = 'alice'" 
    }, 
    "query": { 
    "term": { 
     "user": "bob" 
    } 
    } 
} 

注:これが機能するには、必ずenable dynamic scriptingにしてください。

+0

ありがとうございます。魅力的な作品。 –

+0

素晴らしい、嬉しい助けて! – Val

+0

groovyとインラインスクリプトを有効にする必要がありますか? 正確な構文が分かっていれば、ここでコメントしてください。 script.inline:true script.indexed:true –

関連する問題