zoukankan      html  css  js  c++  java
  • 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();
            }
        }

    搜索结果:

  • 相关阅读:
    详解Python模块导入方法
    第15天上课例子,sqllchemy运用
    【Demo 0075】获取系统进程列表
    【Demo 0076】获取进程中模块列表
    【Demo 0071】托盘小工具
    【Demo 0070】读取EXE\DLL中ICON
    【Demo 0073】复合文件拼拆
    【Demo 0072】启动外部应用程序
    【Demo 0078】获取系统版本信息
    【Demo 0079】进程继承关系
  • 原文地址:https://www.cnblogs.com/guanxiaohe/p/13447709.html
Copyright © 2011-2022 走看看