elasticSearch(四)--结构化查询
结构化查询
1、请求体查询
GET(POST) /_search
POST /_search
{
"from": 30,
"size": 10
}
2、DSL
使用结构化查询, 你需要传递 query 参数:
3、合并多子句
查询子句就像是搭积木一样, 可以合并简单的子句为一个复杂的查询语句, 比如:
叶子子句(leaf clauses)(比如 match 子句)用以在将查询字符串与一个字段(或多字段)进行比较
复合子句(compound)用以合并其他的子句。 例如, bool 子句允许你合并其他的合法子句, must , must_not 或者 should
4、查询与过滤
结构化查询( Query DSL) 和结构化过滤( Filter DSL) 。 查询与过滤语句非常相似, 但是它们由于使用目的不同而稍有差异
5、最重要的查询过滤语句
term过滤:主要用于精确匹配哪些值,如数字,布尔,日期,未进行分词的字符串
terms过滤:与term类似,terms允许有多个匹配条件。
range过滤:允许指定范围匹配。
exists和missing过滤:exists 和 missing 过滤可以用于查找文档中是否包含指定字段或没有某个字段, 类似于SQL语句中的 IS_NULL 条件
bool过滤:
bool 过滤可以用来合并多个过滤条件查询结果的布尔逻辑, 它包含一下操作符:
must :: 多个查询条件的完全匹配,相当于 and 。
must_not :: 多个查询条件的相反匹配, 相当于 not 。
should :: 至少有一个查询条件匹配, 相当于 or 。
这些参数可以分别继承一个过滤条件或者一个过滤条件的数组:
match_all查询:
使用 match_all 可以查询到所有文档, 是没有查询条件下的默认语句
match查询:
match 查询是一个标准查询, 不管你需要全文本查询还是精确查询基本上都要用到它。如果你使用 match 查询一个全文本字段,
它会在真正查询之前用分析器先分析 match 一下查询字符
如果用 match 下指定了一个确切值, 在遇到数字, 日期, 布尔值或者 not_analyzed 的字符串时, 它将为你搜索你给定的值
multi_match查询:
multi_match 查询允许你做 match 查询的基础上同时搜索多个字段:
bool查询:
bool 查询与 bool 过滤相似, 用于合并多个查询子句。 不同的是, bool 过滤可以直接给出是否匹配成功, 而 bool 查询要计算每一个查询子句的 _score ( 相关性分值) 。
must :: 查询指定文档一定要被包含。
must_not :: 查询指定文档一定不要被包含。
should :: 查询指定文档, 有则可以为文档相关性加分。
6、带过滤的查询语句
7、验证查询
/megacorp/_validate/query?explain
显示查询过程
最新文章
- linux字符串url编码与解码
- Canvas 最佳实践(性能篇)
- maven之ubutu安装
- C# 读取Excel内容
- localhost访问不了
- Swift-1-基本概念
- UNIX/Linux网络编程基础:应用层协议简介
- AngularJS - Watch 监听对象
- iOS 页面间传值 之 单例传值 , block 传值
- ADSL拨号连接
- p1217晚餐(简单的dijkstra)
- 从USB驱动器运行Windows 10
- Python抓取成都房价信息
- 关于笔记本安装parrot和kali的一些问题(花屏,息屏,屏幕不能休眠)
- 上海交大ACM总教头俞勇讲述“最聪明人的故事”
- Hands-On Unity 2018 x 移动游戏开发教程
- 返回一个数组升序排列后的位置信息--C#程序举例
- Arch 安装后,一些基本设置(1)
- centos6.4安装 zabbix agent
- win8 下 intellij idea 13 中文输入覆盖的问题
热门文章
- 第一天 python环境变量安装(2.7)
- [后端-Python]-项目练习集
- Fiddler自动响应
- CentOS7下MySQL数据的导入和导出
- 078_Sublime HaoIDE 搭建 Lightning Aura环境
- bat 脚本用 winrar 自动打包压缩文件
- apollo兼容mysql的时候报错Table 'apolloportaldb.hibernate_sequence' doesn't exist
- ES、Lucene、Solr的介绍和区别
- 软件工程日报九——SQLite的安装与配置
- redis注册成windows服务步骤