springBoot+elasticSearch 實現多索引綜合檢索


1.環境:elasticsearch-7.3.2 、springBoot 2.2.0.RELEASE

es相關依賴

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
        </dependency>

檢索測試方法:

@Override
    public void improveSearch(String text) {

        // 搜索請求對象
        SearchRequest searchRequest = new SearchRequest(BwbdType.ES_INDEX,"testdoct");
        // 指定類型
        searchRequest.types(BwbdType.ES_TYPE,"testbean");
        // 搜索源構建對象
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
        // 搜索方式
        // 首先構造多關鍵字查詢條件
        BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();

        // 初始聚合查詢
        MultiMatchQueryBuilder matchQueryBuilder = QueryBuilders
                .multiMatchQuery(text, BwbdType.PROPERTY_NUMBERS
                        , BwbdType.PROPERTY_TITLES, BwbdType.PROPERTY_CONTENTS).analyzer("ik_smart")
                .field("name", 1f)
                .field(BwbdType.PROPERTY_NUMBERS, 0.1f)
                .field(BwbdType.PROPERTY_TITLES, 0.1f)
                .field(BwbdType.PROPERTY_CONTENTS, 0.001f)
                .minimumShouldMatch(BwbdType.MATCH_LEVEL_THREE);
        // 添加條件到布爾查詢
        boolQueryBuilder.must(matchQueryBuilder);


        // 將查詢條件封裝給查詢對象
        searchSourceBuilder.query(boolQueryBuilder);

        searchSourceBuilder.size(20);
        searchSourceBuilder.from(1);

        // ***********************

        // 高亮查詢
        HighlightBuilder highlightBuilder = new HighlightBuilder();
        highlightBuilder.preTags(CommonConstraint.LIGHT_TAG_START); // 高亮前綴
        highlightBuilder.postTags(CommonConstraint.LIGHT_TAG_END); // 高亮后綴
        List<HighlightBuilder.Field> fields = highlightBuilder.fields();
        fields.add(new HighlightBuilder
                .Field(BwbdType.PROPERTY_NUMBERS)); // 高亮字段
        fields.add(new HighlightBuilder
                .Field(BwbdType.PROPERTY_TITLES)); // 高亮字段
        fields.add(new HighlightBuilder
                .Field(BwbdType.PROPERTY_CONTENTS).fragmentSize(100000)); // 高亮字段
        // 添加高亮查詢條件到搜索源
        searchSourceBuilder.highlighter(highlightBuilder);

        // ***********************

        // 向搜索請求對象中設置搜索源
        searchRequest.source(searchSourceBuilder);
        // 執行搜索,向ES發起http請求
        SearchResponse searchResponse = null;
        try (RestHighLevelClient client = new RestHighLevelClient(restClientBuilder)) {
            searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
            int i = 1;
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

搜索結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM