2016-11-04 4 views
0

私はこれを理解しようとしている最後の数時間、ウェブを検索してきました。 すべてのデータを消費する中央のESサーバーがあります。それはプライベートネットワークに位置します。別のネットワークでは、別のESを立ち上げてクライアントにアクセスさせたいので、いくつかの統計を確認することができます。2つのelasticsearchクラスタ間でデータを移行する方法

私の質問:

  • このクライアントに固有のクエリの結果に基づいて、この新しいインスタンスにデータを供給するための最良の方法は何ですか?

  • Logstashの場合、クエリに一致するすべてのドキュメントを返すすべてのインデックスを調べるのはなぜですか?

例:。:

"query": { 
    "bool": { "must": { "match": { "referrer": "clientsite.com" }}} 
} 

私の研究から、ES 5.0の機能新しい「リモートからの再インデックスは、」未来の方法ですが、ほとんどのインターネットの記事はとしてelasticsearchプラグインを使用してLogstashを指します入出力方法。

私はそれを試みましたが、logstashのような結果しか得られず、終了するようです。私が"match_all": {}"だけを使用すると、それはすべての私の文書を通過するようです。

input { 
    elasticsearch { 
    hosts => "192.168.0.1" 
    index => 'logstash-*' 
    query => '{ "query": { "bool": { "must": { "match": { "referrer": "clientsite.com" } } } } }' 
    scroll => "1m" 
    size => 1000 
    } 
} 

    stdout { 
    codec => "rubydebug" 
    } 
} 

は私もノー成功を収めて、このクエリの行を試してみました:予想通りLogstashが動作した

query => '{ "query": { "bool": { "must": { "match_all": {} } , "filter": { "term": { "referrer": "uol.com.br" } } } }, "sort": [ "_doc" ] }' 
+0

クエリでフィルタを作成する必要があります(作成日時またはIDがintの場合)。 –

+0

私の最終的な質問では、レプリケートしたい時間のスライスを制御する日付フィルタを追加しました。しかし、チップをありがとう。 –

答えて

0

は、ここに私のlogstash.confファイルです。私が望んでいたことをlogstashにしたのは、 "match"から "wildcard"に変更を加えることでした。このラインでは

query => '{ "query": { "bool": { "must": { "wildcard": { "referrer": "*clientsite.com*" } } } } }' 

は今、私はすべてのドキュメントを検索することができますよ。

他人を助けることを願っています。

+0

ワイルドカードを使用することは、このタイプのクエリがnot_analyzedフィールドで実行され、大きなデータセットを扱うときにパフォーマンスの問題を引き起こす可能性があるため、適切な方法ではありません。 –

関連する問題