ElasticSearch URI 查询
2024-08-31 11:08:30
公号:码农充电站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?d
title:be*
正则表达式查询示例:
title:[bt]oy
9,模糊匹配与近似查询
示例:
title:beautifl~1
title:"Lord Rings"~2
(本节完。)
推荐阅读:
Kibana,Logstash 和 Cerebro 的安装运行
欢迎关注作者公众号,获取更多技术干货。
最新文章
- nginx 在windows平台上对asp.net做反向代理
- Google Protocol Buffer 简单介绍
- 【ShaderForge】溶解测试
- 中文在unicode中的编码范围
- ural 1243. Divorce of the Seven Dwarfs
- Oracle中REGEXP_SUBSTR函数(转)
- [汇编语言]-第五章[bx]和loop指令
- Python 在Windows下安装matplotlib
- shell编程001
- 复习之webview(观看张荣超视频)
- n年前,我没钱但年轻,我怕n年后我老时,还是一无所成——2017我的收获和反思
- Leetcode Articles: Insert into a Cyclic Sorted List
- Hive 创建表
- Qt 事件机制
- Java定时器的三种实现方式
- 修改Tomcat的网页端口和指向路径
- Sublime Text3 常用快捷键必看
- scala 基础知识总结
- Java ArrayList源码剖析
- 【咸鱼教程】Egret中可长按复制的文本(例如复制优惠码)
热门文章
- cachedThreadPool缓存线程池
- 使用Observer实现HBase到Elasticsearch的数据同步
- Codeforces Round #594 (Div. 2) D1 - The World Is Just a Programming Task
- 【洛谷 p3381】模板-最小费用最大流(图论)
- HDU - 4221 贪心
- hdu5371 Hotaru's problem
- Codeforces Round #647 (Div. 2) - Thanks, Algo Muse! D. Johnny and Contribution (贪心,模拟)
- Codeforces Round #658 (Div. 2) C2. Prefix Flip (Hard Version) (构造)
- Windows Server 2016 开启远程连接并延长过期时间
- net core启动报错Unable to configure HTTPS endpoint. No server certificate was specified