Elasticsearch学习总结四 elasticSearch基本查询详解

一.使用的es版本及介绍

使用的是elasticsearch2.3.3版本,在此只是简单介绍搜索部分的api使用

二. es中基本简单的搜索介绍

1.简单的matchQuery 查询的内容会通过分词,分词后的数据进行检索,只要包含其中一个分词就会被检索出来

   searchRequestBuilder.setQuery(QueryBuilders.matchQuery("fieldD", "bigData is magic")); 

2.matchPhraseQuery 查询的内容通过分词,严格按照分词的出现的顺序进行查询,也就是必须包含所有分词,且出现数据一致

  searchRequestBuilder.setQuery(QueryBuilders.matchPhraseQuery("fieldD", "bigData spark is  magic"));

询的字段是进行分词索引的,如果不是分词索引则不生效, 如果只是查询 bigData magic ,则这种查询是查询不到的,需要完全匹配,如果想要查询到,需要设置slop(2),需要这样查询

searchRequestBuilder.setQuery(QueryBuilders.matchPhraseQuery("fieldD", "bigData spark is magic").slop(2))

3.termQuery 词精确查询,fieldD 分词后包含 bigData的term的文档

   searchRequestBuilder.setQuery(QueryBuilders.termQuery("fieldD", "bigData"));

4.terms Query 多term查询,查询fieldD 包含 bigData spark或storm 中的任何一个或多个的文档

  searchRequestBuilder.setQuery(QueryBuilders.termsQuery("fieldD", "bigData","spark","storm"));

5.rangeQuery 范围查询字段fieldB 大于20并且小于50 包含上下界

 searchRequestBuilder.setQuery(QueryBuilders.rangeQuery("filedB").gt("20").lt("50").includeLower(true).includeUpper(true));

6.prefixQuery 匹配分词前缀 如果字段没分词,就匹配整个字段前缀

searchRequestBuilder.setQuery(QueryBuilders.prefixQuery("fieldD","spark"));

7.wildcard query 通配符查询,支持* 任意字符串;?任意一个字符

searchRequestBuilder.setQuery(QueryBuilders.wildcardQuery("fieldD","spark*"));

8.Fuzzy query 分词模糊查询,通过增加fuzziness 模糊属性,来查询term 如下 能够匹配 fieldD 为 spar park spark前或后加一个字母的term的 文档 fuzziness 的含义是检索的term 前后增加或减少n个单词的匹配查询

searchRequestBuilder.setQuery(QueryBuilders.fuzzyQuery("fieldD","spark").fuzziness(Fuzziness.ONE));

转载于:https://my.oschina.net/u/1792341/blog/911383

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值