ElasticsearchRepository简单用法

博客介绍了Elasticsearch的多种查询方式,包括查询全部、模糊查询、and查询、or查询,以及分页并按id倒叙查询,同时给出了Java和ES的实现方法。还对搜索条件权重“boost”进行了解释。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.查询全部

1.1 java

 esBlogRepositoryl.findAll();

1.2 es

GET /blog/_search
{
  "query": {
    "match_all": {
      "boost": 1
    }
  }
}

2.模糊查询

2.1 java

        //fuzziness 即为最多纠正两个字母然后去匹配,默认为 auto(2)
        FuzzyQueryBuilder fuzzyQueryBuilder = QueryBuilders.fuzzyQuery("title", "springboot1");
        System.out.println(fuzzyQueryBuilder);
        Iterable<EsBlog> search = esBlogRepositoryl.search(fuzzyQueryBuilder);
        System.err.println("==============================================");
        search.forEach(x->{
            System.out.println(x);
        });

2.2 es

GET /blog/_search
{
  "query": {
    "fuzzy": {
      "title": {
        "value": "springboot",
        "fuzziness": "AUTO",
        "prefix_length": 0,
        "max_expansions": 50,
        "transpositions": false,
        "boost": 1
      }
    }
  }
}

3.and查询

3.1 java

        BoolQueryBuilder queryBuilders = QueryBuilders.boolQuery();
        queryBuilders.must(QueryBuilders.matchPhraseQuery("title", "springboot"));
        queryBuilders.must(QueryBuilders.matchPhraseQuery("content", "springboot"));
        System.out.println(queryBuilders.toString());
        Iterable<EsBlog> search = esBlogRepositoryl.search(queryBuilders);
        System.err.println("==============================================");
        search.forEach(x -> {
            System.out.println(x);
        });

3.2 es

GET /blog/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match_phrase": {
            "title": {
              "query": "springboot",
              "slop": 0,
              "zero_terms_query": "NONE",
              "boost": 1
            }
          }
        },
        {
          "match_phrase": {
            "content": {
              "query": "springboot",
              "slop": 0,
              "zero_terms_query": "NONE",
              "boost": 1
            }
          }
        }
      ],
      "adjust_pure_negative": true,
      "boost": 1
    }
  }
}

4.or查询

4.1 java

        BoolQueryBuilder queryBuilders = QueryBuilders.boolQuery();
        queryBuilders.should(QueryBuilders.matchPhraseQuery("title", "springboot1"));
        queryBuilders.should(QueryBuilders.matchPhraseQuery("content", "springboot"));
        System.out.println(queryBuilders.toString());
        Iterable<EsBlog> search = esBlogRepositoryl.search(queryBuilders);
        System.err.println("==============================================");
        search.forEach(x -> {
            System.out.println(x);
        });

4.2 es

GET /blog/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "match_phrase": {
            "title": {
              "query": "springboot1",
              "slop": 0,
              "zero_terms_query": "NONE",
              "boost": 1
            }
          }
        },
        {
          "match_phrase": {
            "content": {
              "query": "springboot",
              "slop": 0,
              "zero_terms_query": "NONE",
              "boost": 1
            }
          }
        }
      ],
      "adjust_pure_negative": true,
      "boost": 1
    }
  }
}

5.分页并按照id倒叙

5.1 java

        BoolQueryBuilder queryBuilders = QueryBuilders.boolQuery();
        queryBuilders.must(QueryBuilders.matchPhraseQuery("title", "springboot"));
        System.out.println(queryBuilders.toString());
        Pageable pageable = PageRequest.of(0, 2, Sort.Direction.DESC,"createTime");
        Page<EsBlog> search = esBlogRepositoryl.search(queryBuilders, pageable);
        System.out.println(search);
        List<EsBlog> content = search.getContent();
        System.err.println("==============================================");
        content.forEach(x->{
            System.out.println(x);
        });

5.2 es

GET /blog/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match_phrase": {
            "title": {
              "query": "springboot",
              "slop": 0,
              "zero_terms_query": "NONE",
              "boost": 1
            }
          }
        }
      ],
      "adjust_pure_negative": true,
      "boost": 1
    }
  }
}

名称解释

  1. boost:搜索条件的权重,可以将某个搜索条件的权重加大。此时当匹配这个搜索条件和匹配另一个搜索条件的document,计算relevance score时,匹配权重更大的搜索条件的document,relevance score会更高,当然也就会优先被返回回来

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DencyCheng

你的鼓励是我最大的支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值