簡體   English   中英

Elasticsearch使用JEST API掃描和滾動

[英]Elasticsearch Scan&scroll with JEST API

我目前正在與JEST合作: https//github.com/searchbox-io/Jest

是否可以使用此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”參數?

是否可以使用此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,但會返回一個scrollId參數,該參數是一個引用,以保留elasticSearch為您保留在內存中的resultSet。 Parameters.SCROLL將定義此搜索將保留在內存中的時間。

要閱讀scrollId:

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

要從resultSet中讀取更多項目,您應該使用以下內容:

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。

如果您有任何疑問,請告訴我。

同意我們需要趕上但是如果你需要一個功能,請打開一個問題。

請查看主人的https://github.com/searchbox-io/Jest/blob/master/jest/src/test/java/io/searchbox/core/SearchScrollIntegrationTest.java

編輯:

似乎JEST目前不支持“掃描”搜索類型: 在惡劣的快速周轉中,似乎JEST現在支持掃描類型搜索! 推特@Ferhat進行快速周轉! JEST - SearchType.java


您是否考慮過使用ElasticSearch Transport客戶端? 我可以理解你是否更喜歡JEST API,但隨着ElasticSearch推出新功能( 圖表A:ElasticSearch 0.90太棒了! ),你可以在彈出時立即使用它們而不是等待JEST趕上來。

我的0.02美元。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM