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();
            }
        }

    搜索结果:

  • 相关阅读:
    sql 一对多变成一对多的最后一条记录的做法
    2.如何优化操作大数据量数据库(改善SQL语句)
    asp数据操作类DB
    4.如何优化操作大数据量数据库(几十万以上数据)(如何选择聚合索引)
    【转】asp中记录集对象的getrows和getstring用法
    用DB类写新闻系统1
    Apache+Tomcat配置负载均衡
    C# CAD 几何图形周围创建尽可能小的圆 使用 .NET 在 2D AutoCAD
    C# Cad 2007 工具栏 工具条创建
    C# Cad 拉伸 关键 GetStretchPoints MoveStretchPointsAt
  • 原文地址:https://www.cnblogs.com/guanxiaohe/p/13447709.html
Copyright © 2011-2022 走看看