目录

创建索引:

插入测试数据

QueryDSL用法

查询所有

排序

查询n条数据

分页查询

查询结果返回指定列

关键字term查询

范围查询(range)

前缀查询(prefix)

通配符查询(wildcard)

根据多个id查询

模糊查询(fuzzy)

高亮查询

自定义高亮标签


创建索引:

请求头
put 192.168.0.101:9200/log_index/请求体:{"mappings":{"log_type":{"properties":{"name":{"type":"keyword"},"age":{"type":"integer"},"birthday":{"type": "date"}}}}
}

插入测试数据

请求头
PUT 192.168.0.101:9200/log_index/log_type/_bulk请求体:{"index":{}}{"name":"小黑","age":23,"birthday":"2012-12-12"}{"index":{}}{"name":"王小黑","age":24,"birthday":"2012-12-13"}{"index":{}}{"name":"张小五","age":8,"birthday":"2012-12-14"}{"index":{}}{"name":"win7","age":9,"birthday":"2012-12-15"}{"index":{}}{"name":"梅超风","age":43,"birthday":"2012-12-16"}{"index":{}}{"name":"张无忌","age":59,"birthday":"2012-12-17"}

QueryDSL用法

查询所有

请求头:
GET 192.168.0.101:9200/log_index/log_type/_search请求体:
{"query":{"match_all":{}}}

注:match_all 而不是match-all中间是下划线

排序

说明:多字段排序,先按照出生日期降序排列,如果出生日期相同则按照年龄排序

请求头:
GET 192.168.0.101:9200/log_index/log_type/_search请求体:
{"query":{"match_all":{}},"sort":{"birthday":"desc","age":"asc"}}

或者

请求头:
GET 192.168.0.101:9200/log_index/log_type/_search请求体:
{"query":{"match_all":{ }},"sort": [{"birthday":{"order":"desc" }},{"age":{"order":"asc"}}]
}

两种写法结果一样

查询n条数据

请求头:
GET 192.168.0.101:9200/log_index/log_type/_search请求体:
{"query":{"match_all":{ }  },"size":2,"sort": [{"birthday":{"order":"desc" }},{"age":{"order":"asc"}}]
}

注意:size的位置适合query关键字并列,而不是在query关键字内部

分页查询

请求头:
GET 192.168.0.101:9200/log_index/log_type/_search请求体:{"query":{"match_all":{ }  },"size":2,"from":1,"sort": [{"birthday":{"order":"desc" }},{"age":{"order":"asc"}}]
}

同理:from和size是并列的,from表示从第几页查询,size表示每页几条数据

查询结果返回指定列

请求头:
GET 192.168.0.101:9200/log_index/log_type/_search请求体:
{"query":{"match_all":{ }  },"size":2,"from":1,"_source":["name","age"]}

注:关键字_source表示要显示的指定列,且指定列以数组的形式表现

关键字term查询

请求头:
GET 192.168.0.101:9200/log_index/log_type/_search请求体:{"query":{"term":{"name":"梅超风"}},"_source":["name","age"]
}或者请求头:
GET 192.168.0.101:9200/log_index/log_type/_search请求体:{"query":{"term":{"name":{"value":"梅超风"}}},"_source":["name","age"]
}

注:使用term关键字查询是特别需要注意text类型和keywordl类型的字段

NOTE1:  通过使用term查询得知ES中默认使用分词器为标准分词器(StandardAnalyzer),标准分词器对于英文单词分词,对于中文单字分词

NOTE2:  通过使用term查询得知,在ES的Mapping Type 中 keyword , date ,integer, long , double , boolean or ip 这些类型不分词**,**只有text类型分词

范围查询(range)

说明:查询年龄大于等于33小于等于35岁的文档数据

请求头:
GET 192.168.0.101:9200/log_index/log_type/_search请求体:
{"query":{"range":{"age":{"gte":33,"lte":35}}},"_source":["name","age"]
}

注:其中gte表示大于等于,lte表示小于等于,gt表示大于,lt表示小于

注:关键字range在query内部,而查询的关键字在range内部

前缀查询(prefix)

请求头:
GET 192.168.0.101:9200/log_index/log_type/_search请求体:
{"query":{"prefix":{"name":{"value":"梅超"}}},"_source":["name","age"]
}

注:这里和term关键字有所区别,我的name字段类型是keyword(keyword默认是不分词),如果是term查询结果则是无数据,而使用perfix查询时则表示查询name是“梅超”前缀的修饰的文档数据。

通配符查询(wildcard)

请求头:
GET 192.168.0.101:9200/log_index/log_type/_search请求体:
{"query":{"wildcard":{"name":{"value":"梅*"}}},"_source":["name","age"]
}

请求头:
GET 192.168.0.101:9200/log_index/log_type/_search请求体:
{"query":{"wildcard":{"name":{"value":"梅?"}}},"_source":["name","age"]
}

注:*表示可以匹配一个或多个字符,而?只能匹配零个或一个,同时通配符要放到索引词的后面

根据多个id查询

请求头:
GET 192.168.0.101:9200/log_index/log_type/_search请求体:
{"query":{"ids":{"values":["AXnciHtbCxsROukG0JQu","AXnciHtbCxsROukG0JQv"]}},"_source":["name","age"]
}

注:这里ids和values都是关键字(千万不要写成id或value!!!!),且values的值是数组的形式展现

模糊查询(fuzzy)

请求头:
GET 192.168.0.101:9200/log_index/log_type/_search请求体:{"query":{"fuzzy":{"name":{"value":"梅花风"}}},"_source":["name","age"]
}

注:fuzzy 模糊查询  最大模糊错误 必须在0-2之间
        # 搜索关键词长度为 2 不允许存在模糊 0
        # 搜索关键词长度为3-5 允许一次模糊 0 1 
       # 搜索关键词长度大于5 允许最大2模糊

如上梅超风三个字,则允许出现一个错误(官方文档这样定义的),因此查询梅花风也是能查询到数据的

bool查询

说明: 用来组合多个条件实现复杂查询

> ​    **must: 相当于&& 同时成立**

> ​    **should: 相当于|| 成立一个就行**

> ​    **must_not: 相当于!  不能满足任何一个**

说明:查询年龄大于等于33小于等于35并且名称是小黑1的文档信息

请求头:
GET 192.168.0.101:9200/log_index/log_type/_search请求体:{"query":{"bool":{"must":[{ "term":{"name":{"value":"小黑1"}}} ,{"range":{"age":{"gte":33,"lte":35}}}]}},"_source":["name","age"]
}

注意的是多个条件查询是比如must后面则是数组格式(内部是json格式的对象),而单个条件查询时则是json对象如下图

请求头:
GET 192.168.0.101:9200/log_index/log_type/_search请求体:{"query":{"bool":{"must": {"range":{"age":{"gte":33,"lte":35}}}}},"_source":["name","age"]
}

高亮查询

说明:关键字梅超风,所有字段含有梅超风的文档数据都高亮显示

请求头:
GET 192.168.0.101:9200/log_index/log_type/_search请求体:
{"query":{"bool":{"must": {"term":{"name":{"value":"梅超风"}}}}},"highlight":{"fields":{"*":{}}},"_source":["name","age"]
}

自定义高亮标签

请求头:
GET 192.168.0.101:9200/log_index/log_type/_search请求体:
{"query":{"bool":{"must": {"term":{"name":{"value":"梅超风"}}}}},"highlight":{"pre_tags": ["<span style='color:red'>"],"post_tags": ["</span>"],"fields":{"*":{}}},"_source":["name","age"]
}

多字段查询

说明:在desc和content字段中查询名称是北京的文档数据(这里的desc,content都是text类型,name是keyword类型)。

请求头:
GET 192.168.0.101:9200/log_index/log_type/_search请求体
{"query":{"multi_match":{"query": "北京","fields":["desc","content"]}},"_source":["name","age","desc","content"]
}请求头:
GET 192.168.0.101:9200/log_index/log_type/_search请求体{"query":{"multi_match":{"query": "北京","fields":["desc","content","name"]}},"_source":["name","age","desc","content"]
}

1.多字段查询时需要注意字段类型,这里的age定义的是integer类型因此这样查询报错

请求头:
GET 192.168.0.101:9200/log_index/log_type/_search请求体
{"query":{"multi_match":{"query": "北京","fields":["desc","content","name","age"]}},"_source":["name","age","desc","content"]
}

请求头:
GET 192.168.0.101:9200/log_index/log_type/_search请求体{"query":{"multi_match":{"query": "北京欢迎","fields":["desc","content","name"]}},"_source":["name","age","desc","content"]
}

注:如果对搜索的字段分词(即搜索的字段是text),则对query先分词在搜索,如果对搜索的字段不分词则直接使用query整体进行搜索。

多字段分词查询

请求头:
GET 192.168.0.101:9200/log_index/log_type/_search请求体
{"query":{"query_string":{"query": "北京","fields":["desc","content","name"]}},"_source":["name","age","desc","content"]
}

ElasticSearch之QueryDSL查询语法相关推荐

  1. ElasticSearch 高级查询语法

    ElasticSearch 高级查询语法Query DSL ES倒排索引 ES高级查询Query DSL 查询所有 match_all 分页查询form 深分页查询Scroll 指定字段排序sort ...

  2. ElasticSearch查询语法

    一.查询关键字 1.terms.term查询 term query会去倒排索引中寻找确切的term,它并不知道分词器的存在,这种查询适合keyword.numeric.date等明确值的 GET te ...

  3. lucene查询语法,适用于ELk:kibana查询

    lucene查询语法,适用于ELk:kibana查询 Kibana在ELK中扮演着数据可视化角色,用来查询及展示数据: Elasticsearch查询采用的是luncene搜索引擎,其4过滤查询语法和 ...

  4. 03.elasticsearch pipeline aggregation查询

    文章目录 1. pipeline aggregation查询语法 1. 符号代表 2. 聚合层级 2. pipeline aggregation 查询类型概览 1. sibling aggregati ...

  5. Grafana教程(prometheus 基本查询语法,alerting报警)

    全栈工程师开发手册 (作者:栾鹏) 架构系列文章 prometheus原理可以参考:https://blog.csdn.net/luanpeng825485697/article/details/82 ...

  6. Kubernetes-基于EFK进行统一的日志管理原理(kibana查询语法)

    全栈工程师开发手册 (作者:栾鹏) 架构系列文章 EFK安装部署参考:https://blog.csdn.net/luanpeng825485697/article/details/83312662 ...

  7. ES(Elasticsearch)基本查询总结(含docker安装,python操作)

    全栈工程师开发手册 (作者:栾鹏) 架构系列文章 官网:https://www.elastic.co/guide/index.html 搜索语法:https://www.elastic.co/guid ...

  8. 第三章 Elasticsearch Query DSL -- 查询

    第三章 Elasticsearch Query DSL -- 查询 摘要 查询和过滤的上下文(context) 相关性得分 查询上下文 过滤上下文 示例(下面这些查询参数,后续会详述) 全文查询 in ...

  9. 【ES知识】ES基础查询语法一览

    大家好,我是老坛. 更多优质文章资源请关注同名公众号:老坛聊开发 Elasticsearch是一个分布式的RESTful 风格的搜索和数据分析引擎,它使用方便,查询速度快,因此也被越来越多的开发人员使 ...

  10. ElasticSearch 文档检索、查询建议、数据聚合

    目录 结构化搜索 term 单词匹配(单个值) terms 单词匹配(多个值) range 范围查询 exists 存在查询.miss 缺失查询 ids id匹配 prefix 前缀匹配 wildca ...

最新文章

  1. 上传jar包到nexus
  2. idea java 非web程序打包
  3. 关于Redis的数据迁移(三种方法)
  4. php mysql update 返回_php mysql_query增删改查(update delete insert)返回值类型
  5. qtextedit 默认文案_QT中常用的控件说明.md
  6. git commit Please tell me who you are it config --global user.email you@example.com
  7. POJ 2483 Cows(树状数组)
  8. 再生希尔伯特空间_向量、函数向量、再生核希尔伯特空间、核技巧
  9. php urldecode 加号不显示_php|urldecode urlencode 的加号问题
  10. Perceptual Losses for Real-Time Style Transfer and Super-Resolution
  11. 如何编写银行转账的测试用例,可以来看这里.....
  12. 灵悟礼品网上专卖店Sprint计划
  13. 犀牛系统连接服务器失败,犀牛5.0安装运行失败,Rhino安装失败解决方法
  14. .Net语言的APP开发平台Smobiler3.2版本将于八月中旬发布!——3.2版本预告(二)
  15. CSDN里的文章去广告、打印成PDF__小胡亲测
  16. DispatcherServlet详细分析
  17. 笔记本连接RK61键机械键盘非损坏的win和alt对调,数字键失灵以及特殊字母键失灵恢复
  18. 投资黄金,当然选贸易场行员平台真宝金业,安全有保障,返佣高,平仓返。
  19. ios11对比android8.0,谁的设计更好?iOS11正式版多图详尽对比安卓8.0
  20. 走近棒球运动·台湾棒球历程·MLB棒球创造营

热门文章

  1. 卡巴斯基7.0离线更新升级包病毒库
  2. Zint生成多种条码及二维码
  3. mac软件推荐,支持m1(持续更新)
  4. php smarty 手册下载,smarty教程
  5. 30 岁的超级玛丽怎样改变了游戏行业?
  6. 计算机历史人物-随笔
  7. 计算机基础毕业论文排版教程,计算机应用基础Word高级应用—排版毕业论文PPT课件.ppt...
  8. git视频及对初学者的学习建议
  9. 软件测试的简历里面,项目介绍要怎么写好呢
  10. 抢红包插件实现原理浅析