Search in sources :

Example 1 with Aggregations

use of org.opensearch.search.aggregations.Aggregations in project fess by codelibs.

the class QueryResponseList method init.

public void init(final OptionalEntity<SearchResponse> searchResponseOpt, final int start, final int pageSize) {
    searchResponseOpt.ifPresent(searchResponse -> {
        final FessConfig fessConfig = ComponentUtil.getFessConfig();
        final SearchHits searchHits = searchResponse.getHits();
        allRecordCount = searchHits.getTotalHits().value;
        allRecordCountRelation = searchHits.getTotalHits().relation.toString();
        queryTime = searchResponse.getTook().millis();
        if (searchResponse.getTotalShards() != searchResponse.getSuccessfulShards()) {
            partialResults = true;
        }
        // build highlighting fields
        final QueryHelper queryHelper = ComponentUtil.getQueryHelper();
        final String hlPrefix = queryHelper.getHighlightPrefix();
        for (final SearchHit searchHit : searchHits.getHits()) {
            final Map<String, Object> docMap = parseSearchHit(fessConfig, hlPrefix, searchHit);
            if (fessConfig.isResultCollapsed()) {
                final Map<String, SearchHits> innerHits = searchHit.getInnerHits();
                if (innerHits != null) {
                    final SearchHits innerSearchHits = innerHits.get(fessConfig.getQueryCollapseInnerHitsName());
                    if (innerSearchHits != null) {
                        final long totalHits = innerSearchHits.getTotalHits().value;
                        if (totalHits > 1) {
                            docMap.put(fessConfig.getQueryCollapseInnerHitsName() + "_count", totalHits);
                            final DocumentField bitsField = searchHit.getFields().get(fessConfig.getIndexFieldContentMinhashBits());
                            if (bitsField != null && !bitsField.getValues().isEmpty()) {
                                docMap.put(fessConfig.getQueryCollapseInnerHitsName() + "_hash", bitsField.getValues().get(0));
                            }
                            docMap.put(fessConfig.getQueryCollapseInnerHitsName(), StreamUtil.stream(innerSearchHits.getHits()).get(stream -> stream.map(v -> parseSearchHit(fessConfig, hlPrefix, v)).toArray(n -> new Map[n])));
                        }
                    }
                }
            }
            parent.add(docMap);
        }
        // facet
        final Aggregations aggregations = searchResponse.getAggregations();
        if (aggregations != null) {
            facetResponse = new FacetResponse(aggregations);
        }
    });
    if (pageSize > 0) {
        calculatePageInfo(start, pageSize);
    }
}
Also used : Constants(org.codelibs.fess.Constants) Iterator(java.util.Iterator) ListIterator(java.util.ListIterator) OptionalEntity(org.dbflute.optional.OptionalEntity) SearchHit(org.opensearch.search.SearchHit) HighlightField(org.opensearch.search.fetch.subphase.highlight.HighlightField) Collection(java.util.Collection) HashMap(java.util.HashMap) Aggregations(org.opensearch.search.aggregations.Aggregations) DocumentField(org.opensearch.common.document.DocumentField) SearchHits(org.opensearch.search.SearchHits) ArrayList(java.util.ArrayList) List(java.util.List) FessConfig(org.codelibs.fess.mylasta.direction.FessConfig) Logger(org.apache.logging.log4j.Logger) StreamUtil(org.codelibs.core.stream.StreamUtil) Map(java.util.Map) QueryHelper(org.codelibs.fess.helper.QueryHelper) ViewHelper(org.codelibs.fess.helper.ViewHelper) SearchResponse(org.opensearch.action.search.SearchResponse) LogManager(org.apache.logging.log4j.LogManager) SearchHit(org.opensearch.search.SearchHit) DocumentField(org.opensearch.common.document.DocumentField) Aggregations(org.opensearch.search.aggregations.Aggregations) FessConfig(org.codelibs.fess.mylasta.direction.FessConfig) QueryHelper(org.codelibs.fess.helper.QueryHelper) SearchHits(org.opensearch.search.SearchHits)

Aggregations

ArrayList (java.util.ArrayList)1 Collection (java.util.Collection)1 HashMap (java.util.HashMap)1 Iterator (java.util.Iterator)1 List (java.util.List)1 ListIterator (java.util.ListIterator)1 Map (java.util.Map)1 LogManager (org.apache.logging.log4j.LogManager)1 Logger (org.apache.logging.log4j.Logger)1 StreamUtil (org.codelibs.core.stream.StreamUtil)1 Constants (org.codelibs.fess.Constants)1 QueryHelper (org.codelibs.fess.helper.QueryHelper)1 ViewHelper (org.codelibs.fess.helper.ViewHelper)1 FessConfig (org.codelibs.fess.mylasta.direction.FessConfig)1 OptionalEntity (org.dbflute.optional.OptionalEntity)1 SearchResponse (org.opensearch.action.search.SearchResponse)1 DocumentField (org.opensearch.common.document.DocumentField)1 SearchHit (org.opensearch.search.SearchHit)1 SearchHits (org.opensearch.search.SearchHits)1 Aggregations (org.opensearch.search.aggregations.Aggregations)1