use of io.searchbox.core.Search in project graylog2-server by Graylog2.
the class IndicesAdapterES6 method move.
@Override
public void move(String source, String target, Consumer<IndexMoveResult> resultCallback) {
// TODO: This method should use the Re-index API: https://www.elastic.co/guide/en/elasticsearch/reference/5.3/docs-reindex.html
final String query = SearchSourceBuilder.searchSource().query(QueryBuilders.matchAllQuery()).size(350).sort(SortBuilders.fieldSort(FieldSortBuilder.DOC_FIELD_NAME)).toString();
final Search request = new Search.Builder(query).setParameter(Parameters.SCROLL, "10s").addIndex(source).build();
final SearchResult searchResult = JestUtils.execute(jestClient, request, () -> "Couldn't process search query response");
final String scrollId = searchResult.getJsonObject().path("_scroll_id").asText(null);
if (scrollId == null) {
throw new ElasticsearchException("Couldn't find scroll ID in search query response");
}
while (true) {
final SearchScroll scrollRequest = new SearchScroll.Builder(scrollId, "1m").build();
final JestResult scrollResult = JestUtils.execute(jestClient, scrollRequest, () -> "Couldn't process result of scroll query");
final JsonNode scrollHits = scrollResult.getJsonObject().path("hits").path("hits");
// No more hits.
if (scrollHits.size() == 0) {
break;
}
final Bulk.Builder bulkRequestBuilder = new Bulk.Builder();
for (JsonNode jsonElement : scrollHits) {
Optional.ofNullable(jsonElement.path("_source")).map(sourceJson -> objectMapper.<Map<String, Object>>convertValue(sourceJson, TypeReferences.MAP_STRING_OBJECT)).ifPresent(doc -> {
final String id = (String) doc.remove("_id");
if (!Strings.isNullOrEmpty(id)) {
bulkRequestBuilder.addAction(indexingHelper.prepareIndexRequest(target, doc, id));
}
});
}
final BulkResult bulkResult = JestUtils.execute(jestClient, bulkRequestBuilder.build(), () -> "Couldn't bulk index messages into index " + target);
final boolean hasFailedItems = !bulkResult.getFailedItems().isEmpty();
final IndexMoveResult result = IndexMoveResult.create(bulkResult.getItems().size(), bulkResult.getJsonObject().path("took").asLong(), hasFailedItems);
resultCallback.accept(result);
}
}
use of io.searchbox.core.Search in project graylog2-server by Graylog2.
the class SearchesAdapterES6 method count.
@Override
public CountResult count(Set<String> affectedIndices, String query, TimeRange range, String filter) {
final String searchSource = standardSearchRequest(query, 0, -1, range, filter, null, false).toString();
final Search search = new Search.Builder(searchSource).addIndex(affectedIndices).build();
final io.searchbox.core.SearchResult searchResult = multiSearch.wrap(search, () -> "Unable to perform count query");
final long tookMs = multiSearch.tookMsFromSearchResult(searchResult);
return CountResult.create(searchResult.getTotal(), tookMs);
}
use of io.searchbox.core.Search in project dq-easy-cloud by dq-open-cloud.
the class TransportClient method prefixQuery.
/**
* 前缀查询
*
* @throws Exception
*/
@Test
public void prefixQuery() throws Exception {
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
// 前缀查询
QueryBuilder queryBuilder = QueryBuilders.prefixQuery("name", "T:o");
searchSourceBuilder.query(queryBuilder);
searchSourceBuilder.size(10);
searchSourceBuilder.from(0);
String query = searchSourceBuilder.toString();
System.out.println(query);
Search search = new Search.Builder(query).addIndex(indexName).addType(typeName).build();
SearchResult result = jestClient.execute(search);
List<Hit<Object, Void>> hits = result.getHits(Object.class);
System.out.println("Size:" + hits.size());
for (Hit<Object, Void> hit : hits) {
Object news = hit.source;
System.out.println(news.toString());
}
}
use of io.searchbox.core.Search in project dq-easy-cloud by dq-open-cloud.
the class TransportClient method rangeQuery.
/**
* 区间查询
*
* @throws Exception
*/
@Test
public void rangeQuery() throws Exception {
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
QueryBuilder queryBuilder = QueryBuilders.rangeQuery("birth").gte("2016-09-01T00:00:00").lte("2016-10-01T00:00:00").includeLower(true).includeUpper(// 区间查询
true);
searchSourceBuilder.query(queryBuilder);
searchSourceBuilder.size(10);
searchSourceBuilder.from(0);
String query = searchSourceBuilder.toString();
System.out.println(query);
Search search = new Search.Builder(query).addIndex(indexName).addType(typeName).build();
SearchResult result = jestClient.execute(search);
List<Hit<Object, Void>> hits = result.getHits(Object.class);
System.out.println("Size:" + hits.size());
for (Hit<Object, Void> hit : hits) {
Object news = hit.source;
System.out.println(news.toString());
}
}
use of io.searchbox.core.Search in project dq-easy-cloud by dq-open-cloud.
the class TransportClient method createSearch.
/**
* 搜索高亮显示
*
* @throws Exception
*/
@Test
public void createSearch() throws Exception {
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(QueryBuilders.termQuery("view", "200"));
HighlightBuilder highlightBuilder = new HighlightBuilder();
// 高亮title
highlightBuilder.field("view");
// 高亮标签
highlightBuilder.preTags("<em>").postTags("</em>");
// 高亮内容长度
highlightBuilder.fragmentSize(500);
// searchSourceBuilder.highlight(highlightBuilder);
System.out.println(searchSourceBuilder.toString());
Search search = new Search.Builder(searchSourceBuilder.toString()).addIndex(indexName).build();
SearchResult result = jestClient.execute(search);
System.out.println(result.getJsonString());
System.out.println("本次查询共查到:" + result.getTotal() + "篇文章!");
List<Hit<CsdnBlog, Void>> hits = result.getHits(CsdnBlog.class);
System.out.println(hits.size());
for (Hit<CsdnBlog, Void> hit : hits) {
CsdnBlog source = hit.source;
// 获取高亮后的内容
Map<String, List<String>> highlight = hit.highlight;
// 高亮后的title
List<String> views = highlight.get("view");
if (views != null) {
source.setView(views.get(0));
}
System.out.println("标题:" + source.getTitile());
System.out.println("内容:" + source.getContent());
System.out.println("浏览数:" + source.getView());
System.out.println("标签:" + source.getTag());
System.out.println("作者:" + source.getAuthor());
}
}
Aggregations