公号:码农充电站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 的安装运行


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

ElasticSearch URI 查询的更多相关文章

  1. ElasticSearch DSL 查询

    公号:码农充电站pro 主页:https://codeshellme.github.io DSL(Domain Specific Language)查询也叫做 Request Body 查询,它比 U ...

  2. Elasticsearch URI search 查询语法整理

    Elasticsearch URI search 一.请求体查询与空查询 1. 请求体查询(request body search) 简单查询语句(lite)是一种有效的命令行adhoc查询.但是,如 ...

  3. 分布式搜索引擎Elasticsearch的查询与过滤

    一.写入 先来一个简单的官方例子,插入的参数为-XPUT,插入一条记录. curl -XPUT 'http://localhost:9200/test/users/1' -d '{ "use ...

  4. 002_分布式搜索引擎Elasticsearch的查询与过滤

    一.写入 先来一个简单的官方例子,插入的参数为-XPUT,插入一条记录. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 curl -XPUT 'http:/ ...

  5. 【转】elasticsearch的查询器query与过滤器filter的区别

    很多刚学elasticsearch的人对于查询方面很是苦恼,说实话es的查询语法真心不简单-  当然你如果入门之后,会发现elasticsearch的rest api设计是多么有意思. 说正题,ela ...

  6. 基于百度地图SDK和Elasticsearch GEO查询的地理围栏分析系统(1)

    本文描述了一个系统,功能是评价和抽象地理围栏(Geo-fencing),以及监控和分析核心地理围栏中业务的表现. 技术栈:Spring-JQuery-百度地图WEB SDK 存储:Hive-Elast ...

  7. Elasticsearch Kibana查询语法

    Elasticsearch Kibana查询语法 2018年06月03日 23:52:30 wangpei1949 阅读数:3992   Elasticsearch Kibana Discover的搜 ...

  8. ElasticSearch—分页查询

    ElasticSearch查询—分页查询详解 Elasticsearch中数据都存储在分片中,当执行搜索时每个分片独立搜索后,数据再经过整合返回.那么,如何实现分页查询呢? 按照一般的查询流程来说,如 ...

  9. Elasticsearch 邻近查询示例

    Elasticsearch 邻近查询示例(全切分分词) JAVA API方式: SpanNearQueryBuilder span = QueryBuilders.spanNearQuery(); s ...

随机推荐

  1. Ajax(简介、基础操作、计算器,登录验证)

    Ajax简介 Ajax 即"Asynchronous Javascript And XML"(异步 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发技术. ...

  2. hadoop的hdfs中的namenode和datanode知识总结

    一,NameNode: 1,  Namenode是中心服务器,单一节点(简化系统的设计和实现),负责管理文件系统的名称空间(namespace)以及客户端对文件的访问. 2, 文件操作,Namenod ...

  3. Redis4.0.1的安装及哨兵模式的配置

    https://blog.csdn.net/u014182745/article/details/76294146

  4. java 去掉重复的数字

    public static void main(String[] args) { String s="1,2,2,2,2,2,3,3,3"; String[] array = s. ...

  5. Java基础进阶

    Java基础进阶J Object类 hashcode() toString() clone() getClass() notify() wait() equals() Random类 生成 随机数 U ...

  6. Flink-v1.12官方网站翻译-P008-Streaming Analytics

    流式分析 事件时间和水印 介绍 Flink明确支持三种不同的时间概念. 事件时间:事件发生的时间,由产生(或存储)该事件的设备记录的时间 摄取时间:Flink在摄取事件时记录的时间戳. 处理时间:您的 ...

  7. Linux 下mv和cp命令

    注意事项:mv与cp的结果不同,mv好像文件"搬家",文件个数并未增加.而cp对文件进行复制,文件个数增加了. 一.cp命令 cp命令用来将一个或多个源文件或者目录复制到指定的目的 ...

  8. 【noi 2.6_9285】盒子与小球之三(DP)

    题意:有N个相同的球,M个不同的盒子,每个盒子最多放K个球.请计算将这N个球全部放入盒子中的方案数模1000007后的结果. 解法:f[i][j]表示i个盒子里放j个球的方案数. 1.得到3重循环的坐 ...

  9. POJ 3281 Dining(最大流板子)

    牛是很挑食的.每头牛都偏爱特定的食物和饮料,其他的就不吃了. 农夫约翰为他的牛做了美味的饭菜,但他忘了根据它们的喜好检查菜单.虽然他不可能喂饱所有的人,但他想让尽可能多的奶牛吃上一顿有食物和水的大餐. ...

  10. hdu4533 威威猫系列故事——晒被子

    Problem Description 因为马拉松初赛中吃鸡腿的题目让不少人抱憾而归,威威猫一直觉得愧对大家,这几天他悄悄搬到直角坐标系里去住了. 生活还要继续,太阳也照常升起,今天,威威猫在第一象限 ...