Rya*_* R. 6 java lucene rest elasticsearch
我目前正在与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\":{}}}");
Run Code Online (Sandbox Code Playgroud)
但我担心大的结果集.如果您使用搜索命令,如何设置"search_type = scan&scroll = 10m&size = 50"参数?
Ped*_*ira 13
是否可以使用此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;
}
Run Code Online (Sandbox Code Playgroud)
SearchResult对象将像往常一样从搜索中返回第一个(大小)itens,但会返回一个scrollId参数,该参数是一个引用,以保留elasticSearch为您保留在内存中的resultSet.Parameters.SCROLL将定义此搜索将保留在内存中的时间.
要阅读scrollId:
scrollId = searchResult.getJsonObject().get("_scroll_id").getAsString();
Run Code Online (Sandbox Code Playgroud)
要从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;
}
Run Code Online (Sandbox Code Playgroud)
不要忘记,每次从结果集中读取时,都会从弹性中返回一个新的scrollId.
如果您有任何疑问,请告诉我.
编辑:
似乎JEST目前不支持"扫描"搜索类型:在恶劣的快速周转中,似乎JEST现在支持扫描类型搜索!推特到@Ferhat进行快速周转!JEST - SearchType.java
您是否考虑过使用ElasticSearch Transport客户端?我可以理解你是否更喜欢JEST API,但随着ElasticSearch推出新功能(图表A:ElasticSearch 0.90太棒了!),你可以在弹出时立即使用它们而不是等待JEST赶上来.
我的0.02美元.
| 归档时间: |
|
| 查看次数: |
8028 次 |
| 最近记录: |