Java-ES-DSL操作-查询

本文介绍了如何在Java中使用DSL(Domain Specific Language)进行Elasticsearch查询,包括查询所有以cust开头的索引,返回特定索引的文档,指定返回的文档数量和起始位置,以及使用Bool查询进行多条件过滤。还提到了如何进行聚合查询和范围查询,如查询externaltype为'Johne'或'tina',age在0到50之间的文档。

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

查询所有以cust开头的索引

GET /cust*/_search?pretty

返回bank索引中的所有的文档:

GET /bank/_search?q=*&pretty

等同于:

POST /bank/_search?pretty
{
    "query": {"match_all": {}}
}

指定返回第11到第20个文档,并指定返回字段:

POST /bank/_search?pretty
{
    "query": {"match_all": {}},
    "from": 10,
    "size":1,
    "_source": ["account_number", "balance"]
}
  • query:查询条件
  • size:可制定返回的条数,不指定默认10
  • from 指定从第几个开始返回
  • _source指定返回的字段

Bool查询

Bool查询现在包括四种子句,must,filter,should,must_not.

  • must:文档 必须 匹配这些条件才能被包含进来。
  • must_not:文档 必须不 匹配这些条件才能被包含进来。
  • should:如果满足这些语句中的任意语句,将增加 _score ,否则,无任何影响。它们主要用于修正每个文档的相关性得分。
  • filter:必须 匹配,但它以不评分、过滤模式来进行。这些语句对评分没有贡献,只是根据过滤标准来排除或包含文档。

多条件查询:
查询customer索引下的externaltype中,name为Johne或tina,age从0到50

GET /customer/external/_search?pretty
{
    "query": {
        "bool": {
            "must": [
               {"match": {
                  "name": "Johne tina"
               }},
               {
                   "range": {
                      "age": {
                         "from": 0,
                         "to": 50
                      }
                   }
               }
            ]
        }
    }
}

out:

{
   "took": 1,
   "timed_out": false,
   "_shards": {
      "total": 5,
      "successful": 5,
      "skipped": 0,
      "failed": 0
   },
   "hits": {
      "total": 1,
      "max_score": 1.287682,
      "hits": [
         {
            "_index": "customer",
            "_type": "extrnal",
            "_id": "1",
            "_score": 1.287682,
            "_source": {
               "name": "tina",
               "age": 20
            }
         }
      ]
   }
}

聚合查询:
将must改为should

range:范围查询

  • gt 大于
  • gte 大于等于
  • lt 小于
  • lte 小于等于
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值