》春节Flag没有达成,,…继续上次的学习
【21ES的查询-terms查询】
6.1.2 terms查询
terms和term的查询机制是一样,都不会将指定的查询关键字进行分词,直接去分词库中匹配,找到相应文档内容。
terms是在针对一个字段包含多个值得时候使用。
term:where provice = 北京
terms:where provice=北京 or provice=上海 or……即 in(……)
- kibana中
- java实现terms查询
- 也可以进行其他字段的查询
搜索在线分词器,查看分词结果
如:sojson.com/analyzer
ps:
1.term不仅可以查询keyword,也可以查询text文本;
2.当文档属性中存在“奋斗的时代”时,
“奋斗的时代”可以被分词器分为“奋斗,奋,斗,时代”;
使用terms查询“奋斗的时代”,由于不会对查询关键词进行分词,故搜索不到结果;而使用terms查询“奋斗”,可以查询到结果。
【22.ES的查询-match_all查询】
match查询属于高层查询,他会根据查询的字段类型不一样,采用不同的查询方式。
- 查询的是日期或者数值,它会将基于字符串的查询内容转换为日期或者数值对待;
- 如果查询的内容是一个不能被分词的内容(keyword),mathch查询不会对你指定的查询关键字进行分词;
- 如果查询的内容是一个可以被分词的内容(text),match会将指定的查询内容根据一定的方式分词,去分词库中匹配制定的内容。
mathch查询,实际底层就是多个term查询,将多个term查询结果封装到一起。
6.2.1 match_all查询
查询全部内容,不指定任何查询条件。
PS:由于没有查询条件,查询到的结果分数都为1。
使用java实现:
注意:
1.ES默认查询10条数据,但可以展示查询到的总数据数;
2.给build设置size值,可以查询相应的数量
【23.ES的查询-match_all查询和布尔match查询】
6.2.2 mathc查询
根据某个field查询数据。
java实现
- 布尔match查询
基于一个field匹配的内容,采用and或者or的方式连接。
java实现
【24.ES的查询-multiMatch查询】
6.2.4 multi_match查询
match针对一个field检索,multi_match针对多个field检索,多个field对应一个text。
java实现
【25.ES的查询-id&ids查询】
6.3 其他查询
6.3.1id查询-简单的查询
根据id查询,相当于where id=?
(1)GET /索引/类型/id
(2)java实现
6.3.2 ids查询-不是简单的查询,是query查询
根据多个id查询,相当于where id in (,,*……)
(1)ES实现
注意:查出结果的max_score匹配分为1,因为是直接匹配方式。
(2)Java实现
》to be continue