美文网首页
ES多条件查询

ES多条件查询

作者: AC编程 | 来源:发表于2022-12-29 11:51 被阅读0次

一、需求说明

1、如果选了同城,则要查同城的动态,参数:cityCode
2、如果输入了关键字,则按关键字分词搜索,参数:keyword

查询条件:cityCode + keyword

二、示例代码

 
        String fieldterm = "cityCode";
        String termValue = 420100000000;


        SearchRequest request = new SearchRequest(index);
        SearchSourceBuilder builder = new SearchSourceBuilder();
        QueryBuilder matchAllQuery = QueryBuilders.matchAllQuery();
        builder.query(matchAllQuery);
        Integer from = (pageNo - 1) * pageSize;
        builder.from(from);
        builder.size(pageSize);
        if (StringUtils.isNotBlank(keyword) || StringUtils.isNotBlank(fieldterm)) {
            BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();

            if (StringUtils.isNotBlank(fieldterm)) {
                // 同城查询:cityCode
                TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery(fieldterm , termValue);
                boolQueryBuilder.must(termQueryBuilder);
            }

             //关键字查询
            if (StringUtils.isNotBlank(keyword)) {
                MultiMatchQueryBuilder multiMatchQueryBuilder = QueryBuilders.multiMatchQuery(keyword, ArrayUtil.toArray(fieldList, String.class));
                if (pageSearchVO.getSearchKeyParticiple()) {
                    //分词查询
                    multiMatchQueryBuilder.operator(Operator.OR);
                } else {
                    //精确查询(关键字不分词查询)
                    multiMatchQueryBuilder.operator(Operator.AND);
                }
                boolQueryBuilder.must(multiMatchQueryBuilder);
            }

            builder.query(boolQueryBuilder);
        }

        if (StringUtils.isNotBlank(orderField) && StringUtils.isNotBlank(orderBy)) {
            FieldSortBuilder order = new FieldSortBuilder(orderField);
            if (orderBy.equals("ASC")) {
                order.order(SortOrder.ASC);
            } else {
                order.order(SortOrder.DESC);
            }
            builder.sort(order);
        }

        request.source(builder);
        SearchResponse response = client.search(request, RequestOptions.DEFAULT);

三、查询语句

{
    "from": 0,
    "size": 20,
    "query": {
        "bool": {
            "must": [
                {
                    "term": {
                        "cityCode": {
                            "value": "420100000000",
                            "boost": 1
                        }
                    }
                },
                {
                    "multi_match": {
                        "query": "科恩",
                        "fields": [
                            "calendarTags^1.0",
                            "calendarTitle^1.0",
                            "calenderBuType^1.0",
                            "cityName^1.0",
                            "content^1.0",
                            "tagsStr^1.0",
                            "topicStr^1.0"
                        ],
                        "type": "best_fields",
                        "operator": "OR",
                        "slop": 0,
                        "prefix_length": 0,
                        "max_expansions": 50,
                        "zero_terms_query": "NONE",
                        "auto_generate_synonyms_phrase_query": true,
                        "fuzzy_transpositions": true,
                        "boost": 1
                    }
                }
            ],
            "adjust_pure_negative": true,
            "boost": 1
        }
    }
}

相关文章

  • 使用ES查询语句须知

    查询样例 这条语句代表这利用Kibana从ES中查询,查询条件以 query标签开始,以bool查询形式插入条件,...

  • es(2)—复杂的多条件查询(bool查询与constant_s

    项目中的es查询需求需要查询多种多样的文本,并且根据一系列的条件进行过滤。而es如何去构建复杂的多条件查询呢? 1...

  • ElasticSearch 7.x 聚合查询

    聚合查询 |ES 的聚合查询和MyQL的聚合查询类型,ES 的聚合查询相比MySQL 要强大的多,ES提供的统计数...

  • Elasticsearch Search API之(Reques

    本节将详细介绍es Search API的查询主体,定制化查询条件的实现主体。 query 搜索请求体中查询条件使...

  • ElasticSearch 使用详解:组合查询怎么玩

    查询是一个复杂过程,特别是当查询过程中有多个条件,在 ES 中当有多个条件的时候,就得使用组合查询了。 组合查询是...

  • MongoDB query notes

    基础 无条件查询: (多)条件查询 条件操作符 $lt $lte $gt $gte $ne $in 包含 $...

  • es条件查询接口声明

    需要启动Eureka服务,虚拟机上的elasticsearch的docker镜像,serach服务 按照关键字查询...

  • Elasticsearch bool query小结

    背景 最近有一个线上的es查询问题,最后确定在使用bool query多条件组合查询时出现should子句查询失效...

  • 记一次ElasticSearch(ES)的复杂搜索。

    记一次ElasticSearch(ES)的复杂搜索。 ElasticSeach 多条件查询 因为业务需求,需要对同...

  • ES查询总结

    用户需要检索和发觉符合条件的信息,ES如何帮忙? 1、用户如何问问题? 2、用户如何借助ES回答问题? 1)查询包...

网友评论

      本文标题:ES多条件查询

      本文链接:https://www.haomeiwen.com/subject/nfdtcdtx.html