公号:码农充电站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 表示包含 AB

4,Phrase:词组查询

Phrase 查询需要用引号引住。

比如 q="A B",表示包含 "A B",并且要求顺序一致,实际上此时 "A B" 会被认为是一个单词

5,查询分组

比如 q=title:A B,表示的是 title:AB,会在 title 字段中查询 A,在所有的字段中查询 B

q=title:(A B),只会在 title 中查询 AB(A B) 用括号括住,表示一个分组。

6,布尔查询

在使用 {"profile":"true"} 查看执行过程时,会有两个概念 mustmust_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

(本节完。)


推荐阅读:

ElasticSearch 查询

ElasticSearch 文档及操作

ElasticSearch 分词器

ElasticSearch 搜索引擎概念简介

Kibana,Logstash 和 Cerebro 的安装运行


欢迎关注作者公众号,获取更多技术干货。

最新文章

  1. nginx 在windows平台上对asp.net做反向代理
  2. Google Protocol Buffer 简单介绍
  3. 【ShaderForge】溶解测试
  4. 中文在unicode中的编码范围
  5. ural 1243. Divorce of the Seven Dwarfs
  6. Oracle中REGEXP_SUBSTR函数(转)
  7. [汇编语言]-第五章[bx]和loop指令
  8. Python 在Windows下安装matplotlib
  9. shell编程001
  10. 复习之webview(观看张荣超视频)
  11. n年前,我没钱但年轻,我怕n年后我老时,还是一无所成——2017我的收获和反思
  12. Leetcode Articles: Insert into a Cyclic Sorted List
  13. Hive 创建表
  14. Qt 事件机制
  15. Java定时器的三种实现方式
  16. 修改Tomcat的网页端口和指向路径
  17. Sublime Text3 常用快捷键必看
  18. scala 基础知识总结
  19. Java ArrayList源码剖析
  20. 【咸鱼教程】Egret中可长按复制的文本(例如复制优惠码)

热门文章

  1. cachedThreadPool缓存线程池
  2. 使用Observer实现HBase到Elasticsearch的数据同步
  3. Codeforces Round #594 (Div. 2) D1 - The World Is Just a Programming Task
  4. 【洛谷 p3381】模板-最小费用最大流(图论)
  5. HDU - 4221 贪心
  6. hdu5371 Hotaru's problem
  7. Codeforces Round #647 (Div. 2) - Thanks, Algo Muse! D. Johnny and Contribution (贪心,模拟)
  8. Codeforces Round #658 (Div. 2) C2. Prefix Flip (Hard Version) (构造)
  9. Windows Server 2016 开启远程连接并延长过期时间
  10. net core启动报错Unable to configure HTTPS endpoint. No server certificate was specified