文章目录
SearchAPI概览
实现对es中存储的数据进行查询分析, endpoint为_search ,如下所示:
- 查询主要有两种形式
- URI Search,操作简便,方便通过命令行测试
- 仅包含部分查询语法
- Request Body Search
- es提供的完备查询语法Query DSL(Domain Specific Language)
- es提供的完备查询语法Query DSL(Domain Specific Language)
URISearch详解与演示
- 通过url query参数来实现搜索,常用参数如下:
- q指定查询的语句,语法为Query String Syntax
- df q中不指定字段时默认查询的字段,如果不指定, es会查询所有字段
- sort排序
- timeout指定超时时间,默认不超时
- from,size用于分页
Query String Syntax
- term与phrase
- alfred way等效于alfred OR way
- "alfred way"词语查询,要求先后顺序
- 泛查询
- alfred等效于在所有字段去匹配该term
- 指定字段
- name:alfred
- Group分组设定,使用括号指定匹配的规则
- (quick OR brown) AND fox
- status:(active OR pending) title:(full text search)
测试:
查询所有字段里有alfred的
“progile”:true会显示详细查询语句
只针对username查询
username:alfred和way是or的关系所以会返回三条
只返回一条,词语查询
username是alfred或则way的,将词语和列表组合在一起使用。
布尔操作符
- AND(&&), OR(||), NOT(!)
- name:(tom NOT lee)
- 注意大写,不能小写
- ±分别对应must和must_not
- name:(tom +lee -alfred)
- name:((lee && !alfred) Il (tom && lee && !alfred))
- +在url中会被解析为空格,要使用encode后的结果才可以,为%2B
以上中tom +lee -alfred一定包含lee一定不包含alfred 可以包含tom
username:alfred查询和way的范查询
username:alfred查询和way的范查询
+要换成%2B