ElasticSearch URI 查询
公号:码农充电站pro
主页:https://codeshellme.github.io
1,URI 查询格式
URI 查询的一般格式如下:
GET /index_name/_search?q=key:val&df=title&sort=year:desc&from=0&size=10
{
"profile":"true"
}
其中的参数代表的含义如下:
- q:用于指定查询语句,它可以是一个键值对,也可以只有一个 val。
- key 表示在哪个字段中查询。
- val 表示查询的内容。
- df:查询中未定义字段前缀时使用的默认字段。如果不指定,默认会对所有字段进行查询。
- sort:指定排序规则。
- from:与 size 一起用于分页。
- profile:用于查看查询执行的详细过程,可参考这里。
- 更多的 URI 参数可参考这里。
2,范查询
如果查询时没有指定字段,就会在所有的字段中查询,这叫做范查询。例如 q=2012。
3,Term:单词查询
Term 查询不需要用引号引住。比如 q=A B 表示包含 A 或 B。
4,Phrase:词组查询
Phrase 查询需要用引号引住。
比如 q="A B",表示包含 "A B",并且要求顺序一致,实际上此时 "A B" 会被认为是一个单词。
5,查询分组
比如 q=title:A B,表示的是 title:A 或 B,会在 title 字段中查询 A,在所有的字段中查询 B。
而 q=title:(A B),只会在 title 中查询 A 或 B。(A B) 用括号括住,表示一个分组。
6,布尔查询
在使用 {"profile":"true"} 查看执行过程时,会有两个概念 must 和 must_not:
must:表示必须存在,用+表示。must not:表示必须不存在,用-表示。
布尔查询包含下面三种:
- AND:且,比如
q=title:(A AND B),表示+title:A +title:B,表示必须包含A,也必须包含B。 - OR:或,比如
q=title:(A OR B),等同于q=title:(A B),表示title:A title:B,表示title中包含A或包含B。 - NOT:非,比如
q=title:(A NOT B),表示title:A -title:B,表示包含A,但不能包含B。
也可以在查询中直接使用 + 或 -, + 用 %2B (URL 编码)表示,比如:
q=title:(%2BA -B),表示必须包含 A,不能包含 B。q=title:(-A -B),表示不能包含 A,也不能包含 B。q=title:(-A %2BB),表示不能包含 A,但必须包含 B。q=title:(A %2BB),其实等价于q=title:(%2BB),表示必须包含 B,A 无所谓。
7,范围查询
用于数字类型:
[]表示闭区间{}表示开区间
使用的时候用括号括住,比如:
year:({2000 TO 2020]),表示2000 < year <= 2020。year:([* TO 2018]),表示year <= 2018。year:({2016 TO *}),表示year > 2016。
8,通配符与正则查询
在通配符查询中:
?代表 1 个字符*代表 0 或多个字符
一般通配符查询效率较低,占内存大,所以不建议使用,特别是放在最前面。
通配符查询示例:
title:mi?dtitle:be*
正则表达式查询示例:
title:[bt]oy
9,模糊匹配与近似查询
示例:
title:beautifl~1title:"Lord Rings"~2
(本节完。)
推荐阅读:
Kibana,Logstash 和 Cerebro 的安装运行
欢迎关注作者公众号,获取更多技术干货。

ElasticSearch URI 查询的更多相关文章
- ElasticSearch DSL 查询
公号:码农充电站pro 主页:https://codeshellme.github.io DSL(Domain Specific Language)查询也叫做 Request Body 查询,它比 U ...
- Elasticsearch URI search 查询语法整理
Elasticsearch URI search 一.请求体查询与空查询 1. 请求体查询(request body search) 简单查询语句(lite)是一种有效的命令行adhoc查询.但是,如 ...
- 分布式搜索引擎Elasticsearch的查询与过滤
一.写入 先来一个简单的官方例子,插入的参数为-XPUT,插入一条记录. curl -XPUT 'http://localhost:9200/test/users/1' -d '{ "use ...
- 002_分布式搜索引擎Elasticsearch的查询与过滤
一.写入 先来一个简单的官方例子,插入的参数为-XPUT,插入一条记录. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 curl -XPUT 'http:/ ...
- 【转】elasticsearch的查询器query与过滤器filter的区别
很多刚学elasticsearch的人对于查询方面很是苦恼,说实话es的查询语法真心不简单- 当然你如果入门之后,会发现elasticsearch的rest api设计是多么有意思. 说正题,ela ...
- 基于百度地图SDK和Elasticsearch GEO查询的地理围栏分析系统(1)
本文描述了一个系统,功能是评价和抽象地理围栏(Geo-fencing),以及监控和分析核心地理围栏中业务的表现. 技术栈:Spring-JQuery-百度地图WEB SDK 存储:Hive-Elast ...
- Elasticsearch Kibana查询语法
Elasticsearch Kibana查询语法 2018年06月03日 23:52:30 wangpei1949 阅读数:3992 Elasticsearch Kibana Discover的搜 ...
- ElasticSearch—分页查询
ElasticSearch查询—分页查询详解 Elasticsearch中数据都存储在分片中,当执行搜索时每个分片独立搜索后,数据再经过整合返回.那么,如何实现分页查询呢? 按照一般的查询流程来说,如 ...
- Elasticsearch 邻近查询示例
Elasticsearch 邻近查询示例(全切分分词) JAVA API方式: SpanNearQueryBuilder span = QueryBuilders.spanNearQuery(); s ...
随机推荐
- HTML之form表单标签的学习
from表单 表示 <form>form表单域</form> 作用 收集并替提交用户数据给指定服务器 属性 action:收集的数据的提交地址(也就是URL) method:收 ...
- Codeforces Round #638 (Div. 2)
Contest Info Practice Link Solved A B C D E F 4/6 O O Ø Ø O 在比赛中通过 Ø 赛后通过 ! 尝试了但是失败了 - 没有尝试 Sol ...
- Codeforces Round #682 (Div. 2) B. Valerii Against Everyone (思维)
题意:给你一组数\(b\),对于每个\(b_i\),相对应的\(a_i=2^{b_i}\),问你是否能找出两个不相交的区间,使得两个区间的\(a_i\)的元素和相等. 题解:对于任意一个\(2^k\) ...
- .Net反编译实践记录
去壳 去壳可以使用 de4dot,源码在 这里.可用版本 下载地址. 使用方式为:.\de4dot.exe [path] 修改代码 反编译修改代码可以使用 dnSpy,源码在 这里.可用版本 下载地址 ...
- 鸟哥的linux私房菜——第五章学习(Linux的文件权限与目录配置)
******************第五章学习****************** 1.[重要的三个概念] 1).文件拥有者(使用者):User,该文件/文件夹只能我来读写: 2).群组:Group, ...
- Socket 编程简介
Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯. 本章节我们为大家接收 Perl ...
- HihoCoder1445 后缀自动机二·重复旋律5(后缀自动机 子串种数)
题意: 询问串的不同子串个数 思路: 后缀自动机每个节点表示以当前字符结尾的一系列后缀,个数为\(maxlen - minlen\),其中\(minlen = maxlen[father]\). 代码 ...
- HDU 6155 Subsequence Count(矩阵 + DP + 线段树)题解
题意:01串,操作1:把l r区间的0变1,1变0:操作2:求出l r区间的子序列种数 思路:设DP[i][j]为到i为止以j结尾的种数,假设j为0,那么dp[i][0] = dp[i - 1][1] ...
- CodeForces 1047C Enlarge GCD(数论)题解
题意:n个数的gcd是k,要你删掉最少的数使得删完后的数组的gcd > k 思路:先求出k,然后每个数除以k.然后找出出现次数最多的质因数即可. 代码: #include<cmath> ...
- Chinese Parents Game
Chinese Parents Game <中国式家长>是一款模拟养成游戏. 玩家在游戏中扮演一位出生在普通的中式家庭的孩子. https://en.wikipedia.org/wiki/ ...