公号:码农充电站pro
主页:https://codeshellme.github.iohtml
URI 查询的通常格式以下:git
GET /index_name/_search?q=key:val&df=title&sort=year:desc&from=0&size=10 { "profile":"true" }
其中的参数表明的含义以下:github
若是查询时没有指定字段,就会在全部的字段中查询,这叫作范查询。例如 q=2012
。正则表达式
Term 查询不须要用引号引住。好比 q=A B
表示包含 A
或 B
。shell
Phrase 查询须要用引号引住。elasticsearch
好比 q="A B"
,表示包含 "A B"
,而且要求顺序一致,实际上此时 "A B"
会被认为是一个单词。ide
好比 q=title:A B
,表示的是 title:A
或 B
,会在 title
字段中查询 A
,在全部的字段中查询 B
。ui
而 q=title:(A B)
,只会在 title
中查询 A
或 B
。(A B)
用括号括住,表示一个分组。搜索引擎
在使用 {"profile":"true"}
查看执行过程时,会有两个概念 must
和 must_not
:编码
must
:表示必须存在,用 +
表示。must not
:表示必须不存在,用 -
表示。布尔查询包含下面三种:
q=title:(A AND B)
,表示 +title:A +title:B
,表示必须包含 A
,也必须包含 B
。q=title:(A OR B)
,等同于 q=title:(A B)
,表示 title:A title:B
,表示 title
中包含 A
或包含 B
。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 无所谓。用于数字类型:
[]
表示闭区间{}
表示开区间使用的时候用括号括住,好比:
year:({2000 TO 2020])
,表示 2000 < year <= 2020
。year:([* TO 2018])
,表示 year <= 2018
。year:({2016 TO *})
,表示 year > 2016
。在通配符查询中:
?
表明 1 个字符*
表明 0 或多个字符通常通配符查询效率较低,占内存大,因此不建议使用,特别是放在最前面。
通配符查询示例:
title:mi?d
title:be*
正则表达式查询示例:
title:[bt]oy
示例:
title:beautifl~1
title:"Lord Rings"~2
(本节完。)
推荐阅读:
Kibana,Logstash 和 Cerebro 的安装运行
欢迎关注做者公众号,获取更多技术干货。