Elasticsearch學習總結四 elasticSearch基本查詢詳解

一.使用的es版本及介紹

使用的是elasticsearch2.3.3版本,在此只是簡單介紹搜索部分的api使用api

二. es中基本簡單的搜索介紹

1.簡單的matchQuery 查詢的內容會經過分詞,分詞後的數據進行檢索,只要包含其中一個分詞就會被檢索出來elasticsearch

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

2.matchPhraseQuery 查詢的內容經過分詞,嚴格按照分詞的出現的順序進行查詢,也就是必須包含全部分詞,且出現數據一致ui

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

詢的字段是進行分詞索引的,若是不是分詞索引則不生效, 若是隻是查詢 bigData magic ,則這種查詢是查詢不到的,須要徹底匹配,若是想要查詢到,須要設置slop(2),須要這樣查詢spa

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

3.termQuery 詞精確查詢,fieldD 分詞後包含 bigData的term的文檔code

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

4.terms Query 多term查詢,查詢fieldD 包含 bigData spark或storm 中的任何一個或多個的文檔orm

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個單詞的匹配查詢spark

searchRequestBuilder.setQuery(QueryBuilders.fuzzyQuery("fieldD","spark").fuzziness(Fuzziness.ONE));
相關文章
相關標籤/搜索