Search in sources :

Example 16 with Search

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);
    }
}
Also used : TermsAggregation(io.searchbox.core.search.aggregation.TermsAggregation) DateTimeZone(org.joda.time.DateTimeZone) Arrays(java.util.Arrays) PutTemplate(io.searchbox.indices.template.PutTemplate) LoggerFactory(org.slf4j.LoggerFactory) ModifyAliases(io.searchbox.indices.aliases.ModifyAliases) RequestConfig(org.apache.http.client.config.RequestConfig) TypeReferences(org.graylog2.jackson.TypeReferences) UpdateSettings(io.searchbox.indices.settings.UpdateSettings) FieldSortBuilder(org.graylog.shaded.elasticsearch6.org.elasticsearch.search.sort.FieldSortBuilder) MaxAggregation(io.searchbox.core.search.aggregation.MaxAggregation) IndicesAdapter(org.graylog2.indexer.indices.IndicesAdapter) HealthStatus(org.graylog2.indexer.indices.HealthStatus) JestUtils(org.graylog.storage.elasticsearch6.jest.JestUtils) Indices(org.graylog2.indexer.indices.Indices) Locale(java.util.Locale) Map(java.util.Map) JsonNode(com.fasterxml.jackson.databind.JsonNode) IndexRangeStats(org.graylog2.indexer.searches.IndexRangeStats) Bulk(io.searchbox.core.Bulk) Cat(io.searchbox.core.Cat) IndexMapping(org.graylog2.indexer.IndexMapping) FilterAggregation(io.searchbox.core.search.aggregation.FilterAggregation) QueryBuilders(org.graylog.shaded.elasticsearch6.org.elasticsearch.index.query.QueryBuilders) SearchSourceBuilder.searchSource(org.graylog.shaded.elasticsearch6.org.elasticsearch.search.builder.SearchSourceBuilder.searchSource) ImmutableSet(com.google.common.collect.ImmutableSet) ImmutableMap(com.google.common.collect.ImmutableMap) Collection(java.util.Collection) Set(java.util.Set) Health(io.searchbox.cluster.Health) AddAliasMapping(io.searchbox.indices.aliases.AddAliasMapping) Collectors(java.util.stream.Collectors) StandardCharsets(java.nio.charset.StandardCharsets) GetAliases(io.searchbox.indices.aliases.GetAliases) RemoveAliasMapping(io.searchbox.indices.aliases.RemoveAliasMapping) PutMapping(io.searchbox.indices.mapping.PutMapping) DeleteIndex(io.searchbox.indices.DeleteIndex) Stats(io.searchbox.indices.Stats) List(java.util.List) Parameters(io.searchbox.params.Parameters) OpenIndex(io.searchbox.indices.OpenIndex) AggregationBuilders(org.graylog.shaded.elasticsearch6.org.elasticsearch.search.aggregations.AggregationBuilders) IndexMoveResult(org.graylog2.indexer.indices.IndexMoveResult) Optional(java.util.Optional) UnsupportedEncodingException(java.io.UnsupportedEncodingException) SearchSourceBuilder(org.graylog.shaded.elasticsearch6.org.elasticsearch.search.builder.SearchSourceBuilder) SearchResult(io.searchbox.core.SearchResult) FilterAggregationBuilder(org.graylog.shaded.elasticsearch6.org.elasticsearch.search.aggregations.bucket.filter.FilterAggregationBuilder) HashMap(java.util.HashMap) ElasticsearchException(org.graylog2.indexer.ElasticsearchException) SearchType(io.searchbox.params.SearchType) Iterators(com.google.common.collect.Iterators) JestClient(io.searchbox.client.JestClient) Inject(javax.inject.Inject) Strings(com.google.common.base.Strings) SortBuilders(org.graylog.shaded.elasticsearch6.org.elasticsearch.search.sort.SortBuilders) ImmutableList(com.google.common.collect.ImmutableList) Flush(io.searchbox.indices.Flush) DeleteTemplate(io.searchbox.indices.template.DeleteTemplate) IndexStatistics(org.graylog2.indexer.indices.stats.IndexStatistics) Duration(com.github.joschi.jadconfig.util.Duration) StreamSupport(java.util.stream.StreamSupport) Nonnull(javax.annotation.Nonnull) GetSettings(io.searchbox.indices.settings.GetSettings) Logger(org.slf4j.Logger) MinAggregation(io.searchbox.core.search.aggregation.MinAggregation) Iterator(java.util.Iterator) IndexSettings(org.graylog2.indexer.indices.IndexSettings) IndexNotFoundException(org.graylog2.indexer.IndexNotFoundException) SearchScroll(io.searchbox.core.SearchScroll) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) Search(io.searchbox.core.Search) AliasMapping(io.searchbox.indices.aliases.AliasMapping) DateTime(org.joda.time.DateTime) ForceMerge(io.searchbox.indices.ForceMerge) GetSingleAlias(org.graylog.storage.elasticsearch6.indices.GetSingleAlias) IOException(java.io.IOException) JestResult(io.searchbox.client.JestResult) Ints(com.google.common.primitives.Ints) CreateIndex(io.searchbox.indices.CreateIndex) BulkResult(io.searchbox.core.BulkResult) Consumer(java.util.function.Consumer) URLEncoder(java.net.URLEncoder) Collectors.toList(java.util.stream.Collectors.toList) CatResult(io.searchbox.core.CatResult) SerializationFeature(com.fasterxml.jackson.databind.SerializationFeature) CloseIndex(io.searchbox.indices.CloseIndex) GetTemplate(io.searchbox.indices.template.GetTemplate) Message(org.graylog2.plugin.Message) Collections(java.util.Collections) State(io.searchbox.cluster.State) FieldSortBuilder(org.graylog.shaded.elasticsearch6.org.elasticsearch.search.sort.FieldSortBuilder) SearchSourceBuilder(org.graylog.shaded.elasticsearch6.org.elasticsearch.search.builder.SearchSourceBuilder) FilterAggregationBuilder(org.graylog.shaded.elasticsearch6.org.elasticsearch.search.aggregations.bucket.filter.FilterAggregationBuilder) SearchResult(io.searchbox.core.SearchResult) JsonNode(com.fasterxml.jackson.databind.JsonNode) ElasticsearchException(org.graylog2.indexer.ElasticsearchException) IndexMoveResult(org.graylog2.indexer.indices.IndexMoveResult) Bulk(io.searchbox.core.Bulk) BulkResult(io.searchbox.core.BulkResult) SearchScroll(io.searchbox.core.SearchScroll) Search(io.searchbox.core.Search) Map(java.util.Map) ImmutableMap(com.google.common.collect.ImmutableMap) HashMap(java.util.HashMap) JestResult(io.searchbox.client.JestResult)

Example 17 with Search

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);
}
Also used : Search(io.searchbox.core.Search) FilterAggregationBuilder(org.graylog.shaded.elasticsearch6.org.elasticsearch.search.aggregations.bucket.filter.FilterAggregationBuilder) QueryBuilder(org.graylog.shaded.elasticsearch6.org.elasticsearch.index.query.QueryBuilder) HighlightBuilder(org.graylog.shaded.elasticsearch6.org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder) BoolQueryBuilder(org.graylog.shaded.elasticsearch6.org.elasticsearch.index.query.BoolQueryBuilder) SearchSourceBuilder(org.graylog.shaded.elasticsearch6.org.elasticsearch.search.builder.SearchSourceBuilder)

Example 18 with Search

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());
    }
}
Also used : Hit(io.searchbox.core.SearchResult.Hit) Search(io.searchbox.core.Search) SearchResult(io.searchbox.core.SearchResult) JsonObject(com.google.gson.JsonObject) QueryBuilder(org.elasticsearch.index.query.QueryBuilder) SearchSourceBuilder(org.elasticsearch.search.builder.SearchSourceBuilder) Test(org.junit.Test)

Example 19 with Search

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());
    }
}
Also used : Hit(io.searchbox.core.SearchResult.Hit) Search(io.searchbox.core.Search) SearchResult(io.searchbox.core.SearchResult) JsonObject(com.google.gson.JsonObject) QueryBuilder(org.elasticsearch.index.query.QueryBuilder) SearchSourceBuilder(org.elasticsearch.search.builder.SearchSourceBuilder) Test(org.junit.Test)

Example 20 with Search

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());
    }
}
Also used : GsonBuilder(com.google.gson.GsonBuilder) HighlightBuilder(org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder) SearchSourceBuilder(org.elasticsearch.search.builder.SearchSourceBuilder) QueryBuilder(org.elasticsearch.index.query.QueryBuilder) SearchResult(io.searchbox.core.SearchResult) SearchSourceBuilder(org.elasticsearch.search.builder.SearchSourceBuilder) Hit(io.searchbox.core.SearchResult.Hit) Search(io.searchbox.core.Search) List(java.util.List) HighlightBuilder(org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder) Test(org.junit.Test)

Aggregations

Search (io.searchbox.core.Search)45 SearchResult (io.searchbox.core.SearchResult)24 SearchSourceBuilder (org.elasticsearch.search.builder.SearchSourceBuilder)23 Test (org.junit.Test)15 Hit (io.searchbox.core.SearchResult.Hit)12 JestClient (io.searchbox.client.JestClient)11 SearchSourceBuilder (org.graylog.shaded.elasticsearch6.org.elasticsearch.search.builder.SearchSourceBuilder)10 QueryBuilder (org.elasticsearch.index.query.QueryBuilder)9 JsonObject (com.google.gson.JsonObject)8 Map (java.util.Map)8 IOException (java.io.IOException)7 List (java.util.List)7 Set (java.util.Set)6 Collectors (java.util.stream.Collectors)6 Inject (javax.inject.Inject)6 IndexMapping (org.graylog2.indexer.IndexMapping)6 Optional (java.util.Optional)5 BoolQueryBuilder (org.graylog.shaded.elasticsearch6.org.elasticsearch.index.query.BoolQueryBuilder)5 QueryBuilder (org.graylog.shaded.elasticsearch6.org.elasticsearch.index.query.QueryBuilder)5 QueryBuilders (org.graylog.shaded.elasticsearch6.org.elasticsearch.index.query.QueryBuilders)5