elasticsearch常用查询

query DSL
match 查询
{
    "match": {
        "tweet": "About Search"
    }
}
注:match查询只能就指定某个确切字段某个确切的值进行搜索,做精确匹配搜索时,
你最好用过滤语句,因为过滤语句可以缓存数据。

match_phrase 查询
{
    "query": {
        "match_phrase": {
            "title": "quick brown fox"
        }
    }
}
注:与match相比,不会拆分查询条件
参考:https://blog.csdn.net/liuxiao723846/article/details/78365078?locationNum=2&fps=1


multi_match查询:对多个field查询
{
    "multi_match": {
        "query":    "full text search",
        "fields":   [ "title", "body" ]
    }
}

bool 查询
must: 查询指定文档一定要被包含。
filter: 和must类似,但不计分。
must_not: 查询指定文档一定不要被包含。
should: 查询指定文档,满足一个条件就返回。
POST _search
{
  "query": {
    "bool" : {
      "must" : {
        "term" : { "user" : "kimchy" }
      },
      "filter": {
        "term" : { "tag" : "tech" }
      },
      "must_not" : {
        "range" : {
          "age" : { "gte" : 10, "lte" : 20 }
        }
      },
      "should" : [
        { "term" : { "tag" : "wow" } },
        { "term" : { "tag" : "elasticsearch" } }
      ],
      "minimum_should_match" : 1,
      "boost" : 1.0
    }
  }
}

prefix 查询:以什么字符开头
{
  "query": {
    "prefix": {
      "hostname": "wx"
    }
  }
}

wildcards 查询:通配符查询
{
    "query": {
        "wildcard": {
            "postcode": "W?F*HW"
        }
    }
}
注:?用来匹配任意字符,*用来匹配零个或者多个字符

regexp 查询:正则表达式查询
{
    "query": {
        "regexp": {
            "postcode": "W[0-9].+"
        }
    }
}

注:
1. 字段、词条
字段"Quick brown fox" 会产生
词条"quick","brown"和"fox"
2. prefix,wildcard以及regexp查询基于词条
---------------------------------------------------------------------

filter DSL
term 过滤:精确匹配
{
  "query": {
    "term": {
      "age": 26
    }
  }
}

terms 过滤:指定多个匹配条件
{
  "query": {
    "terms": {
      "status": [ 304, 302 ]
    }
  }
}

range 过滤
{
    "range": {
        "age": {
            "gte":  20,
            "lt":   30
        }
    }
}

范围操作符包含:
gt :: 大于
gte:: 大于等于
lt :: 小于
lte:: 小于等于

exists/missing 过滤:过滤字段是否存在
{
    "exists":   {
        "field":    "title"
    }
}

bool过滤:合并多个过滤条件查询结果的布尔逻辑
{
    "bool": {
        "must":     { "term": { "folder": "inbox" }},
        "must_not": { "term": { "tag":    "spam"  }},
        "should": [
                    { "term": { "starred": true   }},
                    { "term": { "unread":  true   }}
        ]
    }
}
注:
must :: 多个查询条件的完全匹配,相当于 and。
must_not :: 多个查询条件的相反匹配,相当于 not。
should :: 至少有一个查询条件匹配, 相当于 or。

原文地址:https://www.cnblogs.com/stellar/p/9825598.html

时间: 2024-10-09 02:14:42

elasticsearch常用查询的相关文章

[Elasticsearch] 常用查询和操作总结

1. 取得某个索引中某个字段中的所有出现过的值 这种操作类似于使用SQL的SELECT UNIQUE语句.当需要获取某个字段上的所有可用值时,可以使用terms聚合查询完成: GET /index_streets/_search?search_type=count { "aggs": { "uniq_streets": { "terms": { "field": "name.raw", "size

ElasticSearch——常用查询命令

集群相关 --查询集群健康状态 GET _cluster/health --查询所有节点 GET _cat/nodes --查询索引及分片的分布 GET _cat/shards --查询所有插件 GET _cat/plugins 索引相关查询 --查询所有索引及容量 GET _cat/indices --查询索引映射结构 GET my_index/_mapping --查询所有索引映射结构 GET _all --查询所有的相同前缀索引 GET my-*/_search --查询所有索引模板 GE

[Elasticsearch] 关于字段重复值的常用查询和操作总结

1. 取得某个索引中某个字段中的所有出现过的值 这种操作类似于使用SQL的SELECT UNIQUE语句.当需要获取某个字段上的所有可用值时,可以使用terms聚合查询完成: GET /index_streets/_search?search_type=count { "aggs": { "street_values": { "terms": { "field": "name.raw", "siz

elasticsearch 常用command

elasticsearch常用命令 检查es版本信息 curl IP:9200 查看集群是否健康 http://IP:9200/_cat/health?v curl 'IP:9200/_cat/health?v' 查看节点列表 http://IP:9200/_cat/nodes?v curl 'IP:9200/_cat/nodes?v' 列出所有索引及存储大小 http://IP:9200/_cat/indices?v curl 'IP:9200/_cat/indices?v'--查询所有索引及

MySql学习笔记(一)之DQL常用查询

MySql学习笔记(一)之DQL常用查询 前言:mysql是中小型的数据库软件,SQL语言分为DDL,DCL,DML,DQL四种,在这里重点讲解DQL的单表查询. 正文:在学习mysql单表查询之前,我们先做一些准备工作. 需要安装的软件如下: 1.mysql,版本可以选择5.1或者5.5,安装过程可以参考博客:http://www.cnblogs.com/ixan/p/7341637.html 2.mysql图形化管理软件:Navicate,sqlyog(二选一,推荐使用sqlyog). 本文

【Oracle 常用查询】oracle表空间使用率统计查询

参考1 --查询表空间使用情况 SELECT Upper(F.TABLESPACE_NAME) "表空间名", D.TOT_GROOTTE_MB "表空间大小(M)", D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)", To_char(Round(( D.TOT_GROOTTE_MB - F.TOTAL_BYTES ) / D.TOT_GROOTTE_MB * 100, 2), '990.99') || '

python-django-ORM,常用查询方式

介绍django model 的一些常用查询方式 首先是一些文档性的帮助 __exact 精确等于 like ‘aaa’ __iexact 精确等于 忽略大小写 ilike ‘aaa’ __contains 包含 like ‘%aaa%’ __icontains 包含 忽略大小写 ilike ‘%aaa%’,但是对于sqlite来说,contains的作用效果等同于icontains. __gt 大于 __gte 大于等于 __lt 小于 __lte 小于等于 __in 存在于一个list范围内

ORACLE数据库常用查询二

ORACLE数据库常用查询 1.查看表空间对应数据文件情况: SQL> SELECT TABLESPACE_NAME,FILE_NAME,BYTES/1024/1024 MB,AUTOEXTENSIBLE FROM DBA_DATA_FILES; TABLESPACE_NAME FILE_NAME MB AUTOEXTENSIBLE ------------------------------ ---------------------------------------------------

23个MySQL常用查询语句

一查询数值型数据: SELECT * FROM tb_name WHERE sum > 100; 查询谓词:>,=,<,<>,!=,!>,!<,=>,=< 二查询字符串 SELECT * FROM tb_stu  WHERE sname  =  '小刘' SELECT * FROM tb_stu  WHERE sname like '刘%' SELECT * FROM tb_stu  WHERE sname like '%程序员' SELECT * F