ES常见查询总结

1:查询总数

GET demo_person/_count
{
    
  "query": {
   
    "match_all": {
   }
  }
}

上述用sql表示:

SELECT COUNT(*) FROM demo_person

2:查询所有数据

GET demo_person/_search
{
     
  "query": {
   
    "match_all": {
   }
  }
}

上述用sql表示:

SELECT * FROM demo_person

3:查询指定条数

GET demo_person/_search
{
     "size": 20, 
  "query": {
   
    "match_all": {
   }
  }
}

上述用sql表示:

SELECT * FROM demo_person LIMIT 20

4:根据ID查询

GET /demo_person/_doc/1?pretty

上述用sql表示:

SELECT * FROM demo_person WHERE _id = '1'

5:一个查询字符串搜索

GET /demo_person/_search?q=last_name:Smith

上述用sql表示:

SELECT * FROM demo_person WHERE last_name = 'Smith'

6:match搜索

这是一个 Elasticsearch 查询语句,用于在索引为 demo_person 中查询 last_name 字段包含 “Smith” 的文档,
特点先分词,再拿词去匹配倒排索引

GET /demo_person/_search
{
   
    "query" : {
   
        "match" : {
   
            "last_name" : "Smith"
        }
    }
}

上述用sql表示:

SELECT * FROM demo_person WHERE last_name ='Smith'

7:term搜索

这是一个 Elasticsearch 查询语句,用于在索引为 demo_person 中查询 last_name 字段精确匹配值为 “Smith” 的文档。term:不分词直接匹配词条

GET /demo_person/_search
{
   
  "query": {
   
    "term": {
   
      "last_name": {
   
        "value": "Smith"
      }
    }
  }
}

上述用sql表示:

SELECT * FROM demo_person WHERE last_name = 'Smith'

8:bool搜索

这是一个 Elasticsearch 查询语句,用于在索引为 demo_person 中查询 last_name 字段包含 “Smith” 且 age 大于等于 30 的文档。
must: 完全匹配条件 相当于sql中的and
should: 至少满足一个条件 相当于sql中的 or
must_not: 文档必须不匹配条件 相当于sql中的!=

GET /demo_person/_search
{
   
  "query": {
   
    "bool": {
   
      "must": [
        {
   "match": {
   
          "last_name": "Smith"
        }}
      ],
      "filter": [
        {
   "range": {
   
          "age": {
   
            "gte": 30
          }
        }}
      ]
    }
  }
}

上述用sql表示:

SELECT * FROM demo_person WHERE last_name = 'Smith' AND age >= 30

9:must多条件匹配查询

这是一个 Elasticsearch 查询语句,用于在索引为 demo_person 中查询 last_name 字段包含 “Smith” 且 age 等于 32 的文档。

GET /demo_person/_search
{
   
  "query": {
   
    "bool": {
   
      "must": [
        {
   
          "match": {
   
          "last_name": "Smith"
          }
        },
        {
   
          "match": {
   
            "age": 32
          }
        }
      ]
    }
  }
}

上述用sql表示:

SELECT * FROM demo_person WHERE last_name = 'Smith' AND age = 32

10:Should满足一个条件查询

这是一个 Elasticsearch 查询语句,用于在索引为 demo_person 中查询 last_name 字段包含 “Fir” 或 age 等于 32 的文档。

GET /demo_person/_search
{
   
  "query": {
   
    "bool": {
   
      "should": [
        {
   
          "match": {
   
          "last_name": "Fir"
          }
        },
        {
   
          "match": {
   
            "age": 32
          }
        }
      ]
    }
  }
}

上述用sql表示:

SELECT * FROM demo_person WHERE last_name = 'Fir' OR age = 32

11: must_not必须不匹配查询

这是一个 Elasticsearch 查询语句,用于在索引为 demo_person 中查询 last_name 字段不包含 “Fir” 且 age 不等于 32 的文档

GET /demo_person/_search
{
   
  "query": {
   
    "bool": {
   
      "must_not": [
        {
   
          "match": {
   
          "last_name": "Fir"
          }
        },
        {
   
          "match": {
   
            "age": 32
          }
        }
      ]
    }
  }
}

上述用sql表示:

SELECT * FROM demo_person WHERE last_name != 'Fir' AND age != 32

12:多个字段查询内容

这是一个 Elasticsearch 查询语句,用于在索引为 demo_person 中查询 last_name 和 about 字段包含 “collect” 或 “rock” 的文档。

GET /demo_person/_search
{
   
 "query": {
   
    "multi_match": {
   
      "query": "collect rock",
      "fields": ["last_name","about"]
    }
 }
}

上述用sql表示:

SELECT * FROM demo_person WHERE last_name LIKE '%collect%' OR about LIKE '%collect%' OR last_name LIKE '%rock%' OR about LIKE '%rock%'

13:一个字段查询多个内容

GET /demo_person/_search
{
   
 "query": {
   
   "terms": {
   
     "about": [
       "rock",
       "hehe"	
     ]
   }
 }	
}

上述用sql表示:

SELECT * FROM demo_person WHERE about IN ('rock', 'hehe')

14:通配符和正则匹配

GET /demo_person/_search
{
   
 "query": {
   
   "bool": {
   
     "filter": [
      {
   
         "wildcard":{
   
         "last_name":"*mi*"
        }
      }]
   }
 }
}

上述用sql表示:

SELECT * FROM demo_person WHERE last_name LIKE '%mi%'

15:前缀查询

GET /demo_person/_search
{
   
 "query": {
   
   "prefix": {
   
     "last_name": {
   
       "value": "Smi"
     }
   }
 }
}
 

上述用sql表示:

SELECT * FROM demo_person WHERE last_name LIKE 'Smi%'

16:短语匹配

这是一个 Elasticsearch 查询语句,用于在索引为 demo_person 中查询 about 字段包含短语 “rock climbing” 的文档。

GET /demo_person/_search
{
   
    "query" : {
   
        "match_phrase" : {
   
            "about" : "rock climbing"
        }
    }
}

上述用sql表示:

SELECT * FROM demo_person WHERE about LIKE '%rock climbing%'

17:范围查询

GET demo_person/_search
{
     
  "query": {
   
    "range": {
   
      "age": {
   
        "gte": 30,
        "lt": 35
      }
    }
  }
}

上述用sql表示:

SELECT * FROM demo_person WHERE age >= 30 AND age < 35

18:字段存在查询

GET /demo_person/_search
{
   
 "query": {
   
   "exists": {
   "field": "age"}
 }
}

上述用sql表示:

SELECT * FROM demo_person WHERE age IS NOT NULL

相关推荐

  1. ES常见查询总结

    2023-12-15 05:42:02       34 阅读
  2. 总结ES~~~

    2023-12-15 05:42:02       44 阅读
  3. Es条件查询

    2023-12-15 05:42:02       39 阅读
  4. ES查询小技能

    2023-12-15 05:42:02       19 阅读
  5. ES聚合查询

    2023-12-15 05:42:02       15 阅读
  6. es6 常用的object归纳总结和部分数组纠结总结

    2023-12-15 05:42:02       13 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-15 05:42:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-15 05:42:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-15 05:42:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-15 05:42:02       18 阅读

热门阅读

  1. 如何使用EXCEL制作一份高效、美观的成绩单

    2023-12-15 05:42:02       39 阅读
  2. MySQL和Minio数据备份

    2023-12-15 05:42:02       39 阅读
  3. REST与RPC = 面向对象和函数编程

    2023-12-15 05:42:02       38 阅读
  4. Vue3 逻辑复用 - 组合式函数

    2023-12-15 05:42:02       38 阅读
  5. linux 环境下替换jar包中class文件

    2023-12-15 05:42:02       119 阅读
  6. uni-app地图标点展示

    2023-12-15 05:42:02       35 阅读