Search API(URI)
GET /_search #查询所有索引文档
GET /my_index/_search #查询指定索引文档
GET /my_index1,my_index2/_search #多索引查询
GET /my_*/_search
2019-03-xxx
2019-04-vvv
2019-05-xxx
- URI查询方式(查询有限制,很多配置不能实现)
GET /my_index/_search?q=user:alfred #指定字段查询
GET /my_index/_search?q=keyword&df=user&sort=age:asc&from=4&size=10&timeout=1s
q : 指定查询的语句,例如q=aa或q=user:aa
df:q中不指定字段默认查询的字段,如果不指定,es会查询所有字段
Sort:排序,asc升序,desc降序
timeout:指定超时时间,默认不超时
from,size:用于分页
- term与phrase
term相当于单词查询,phrase相当于词语查询
term:Alfred way等效于alfred or way
phrase:”Alfred way” 词语查询,要求先后顺序
- 泛查询
Alfred等效于在所有字段去匹配该term(不指定字段查询)
- 指定字段
name:alfred
- Group分组设定(),使用括号指定匹配的规则
(quick OR brown)AND fox:通过括号指定匹配的优先级
status:(active OR pending) title:(full text search):把关键词当成一个整体
- 查询案例及详解
- 批量创建文档
- 泛查询
GET test_search_index/_search?q=alfred
- 查询语句执行计划查看
GET test_search_index/_search?q=alfred
{
“profile”:true
}
- term查询
GET test_search_index/_search?q=username:alfred way #alfred OR way
- phrase查询
GET test_search_index/_search?q=username:”alfred way”
6、group查询
GET test_search_index/_search?q=username:(alfred OR way)
7、布尔操作符
(1)AND(&&),OR(||),NOT(!)
例如:name:(tom NOT lee)
#表示name字段中可以包含tom但一定不包含lee
- +、-分别对应must和must_not
例如:name:(tom +lee -alfred)
#表示name字段中,一定包含lee,一定不包含alfred,可以包含tom
注意:+在url中会被解析成空格,要使用encode后的结果才可以,为%2B
GET test_search_index/_search?q=username:(alfred %2Bway)
- 范围查询,支持数值和日期
- 区间:闭区间:[],开区间:{}
age:[1 TO 10] #1<=age<=10
age:[1 TO 10} #1<=age<10
age:[1 TO ] #1<=age
age:[* TO 10] #age<=10
- 算术符号写法
age:>=1
age:(>=1&&<=10)或者age:(+>=1 +<=10)
- 通配符查询
?:1个字符
*:0或多个字符
例如:name:t?m
name:tom*
name:t*m
注意:通配符匹配执行效率低,且占用较多内存,不建议使用,如无特殊要求,不要讲?/*放在最前面
- 正则表达式
name:/[mb]oat/
- 模糊匹配fuzzy query
name:roam~1 [0,1,2]
匹配与roam差1个character的词,比如foam、roams等
- 近似度查询proximity search
“fox quick”~5
以term为单位进行差异比较,比如”quick fox” “quick brown fox”。
想要了解跟多关于大数据培训课程内容欢迎关注尚硅谷java培训,尚硅谷除了这些技术文章外还有免费的高质量java培训课程视频供广大学员下载学习。
上一篇: 前端培训技术object类中有哪些方法
下一篇: java培训技术处理模型数据之 Map