2013-05-21 8 views
6

でスクロール私は現在、冗談で働いています: https://github.com/searchbox-io/JestElasticsearchスキャン&冗談のAPI

は、このAPIでスキャン&スクロールを行うことが可能ですか?

http://www.elasticsearch.org/guide/reference/api/search/search-type/

私は現在、検索コマンドを使用しています:

Search search = new Search("{\"size\" : "+RESULT_SIZE+", \"query\":{\"match_all\":{}}}"); 

が、大きな結果セットが心配です。この検索コマンドを使用する場合、 "search_type = scan & scroll = 10m & size = 50"引数をどのように設定しますか?

答えて

5

EDIT:冗談は現在、「スキャン」、検索タイプサポートは表示されません

:邪悪な短納期で は、冗談が今スキャン型検索をサポートしていることを表示されます!迅速な処理のために小道具@Ferhatに! JEST - SearchType.java


ElasticSearch Transportクライアントを使用していると思われましたか?あなたがJEST APIを少し気に入っているかどうか分かりましたが、新機能がElasticSearch(Exhibit A: ElasticSearch 0.90 is fantastic!)のために公開されると、JESTが追いつくのを待つのではなく、すぐにポップアウトするようになります。

My $ 0.02。

+0

フィードバックをいただきありがとうございます。このアプリケーションのhttpを使用してスタック。 –

+0

私は見る。申し訳ありませんが私はより多くの援助ができませんでした! – RustyBuckets

7

私は追いつく必要がありますが、機能が必要な場合は問題を開いてください。マスター

+0

スクロールをクリアする例はありますか? (PS:私はこの投稿がSUPERであることを知っています。私はむしろESクライアントAPIを使っていますが、愚かなGoogle AppEngineはそれを嫌っています)。 – ndtreviv

9

ご確認くださいhttps://github.com/searchbox-io/Jest/blob/master/jest/src/test/java/io/searchbox/core/SearchScrollIntegrationTest.javaは、このAPIでスキャン&スクロールを行うことは可能ですか?

はいです。私の実装はこれのように働いています。

弾性検索のスクロール検索を開始

public SearchResult startScrollSearch (String type, Long size) throws IOException { 

      String query = ConfigurationFactory.loadElasticScript("my_es_search_script.json"); 

      Search search = new Search.Builder(query) 
              // multiple index or types can be added. 
              .addIndex("myIndex") 
              .addType(type) 
              .setParameter(Parameters.SIZE, size) 
              .setParameter(Parameters.SCROLL, "1m") 
              .build(); 

       SearchResult searchResult = EsClientConn.getJestClient().execute(search); 
       return searchResult; 

     } 

のSearchResultオブジェクトが最初の(サイズ)を返すであろうが、通常のように、検索をオフitensしかしたresultSetそのelasticSearch維持する基準となるscrollIdパラメータに戻りますあなたのために記憶に残る。 Parameters.SCROLLは、この検索がメモリに保持される時間を定義します。あなたがフォローのようなものを使用する必要がありますたresultSetからより多くのitensを読むために

scrollId = searchResult.getJsonObject().get("_scroll_id").getAsString(); 

:読みscrollIdについては

public JestResult readMoreFromSearch(String scrollId, Long size) throws IOException { 

    SearchScroll scroll = new SearchScroll.Builder(scrollId, "1m") 
       .setParameter(Parameters.SIZE, size).build(); 

     JestResult searchResult = EsClientConn.getJestClient().execute(scroll); 
     return searchResult; 

} 

は毎回あなたが結果セットから読み取ることを忘れないでください。新しいscrollIdがelasticから返されます。

疑問がある場合は教えてください。

+0

これは素晴らしい答えです!ありがとう@pedro –

+0

@DarshanMehtaようこそ –

関連する問題