<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                **1. 查詢一個索引的所有文檔** ```java /** * 查詢一個索引的所有文檔 */ @Test public void matchAllQuery() throws IOException { //獲取客戶端 RestHighLevelClient client = new RestHighLevelClient( RestClient.builder(new HttpHost("localhost", 9200, "http")) ); SearchRequest request = new SearchRequest(); //設置要查詢的索引 request.indices("student"); //構建SearchSourceBuilder SearchSourceBuilder builder = new SearchSourceBuilder(); //查詢所有數據 builder.query(QueryBuilders.matchAllQuery()); request.source(builder); //發送請求并獲取響應 SearchResponse response = client.search(request, RequestOptions.DEFAULT); for (SearchHit hit : response.getHits()) { log.info(hit.getSourceAsString()); } //{"name":"zhangsan","nickname":"zhangsan","sex":"男","age":30} //{"name":"lisi","nickname":"lisi","sex":"男","age":20} //{"name":"wangwu","nickname":"wangwu","sex":"女","age":40} //{"name":"zhangsan01","nickname":"zhangsan01","sex":"女","age":50} //{"name":"zhangsan02","nickname":"zhangsan02","sex":"女","age":30} client.close(); //關閉連接 } ``` **2. 關鍵字精準查詢** ```java /** * 關鍵字精準查詢。 * term 查詢,精確的關鍵詞匹配查詢,不對查詢條件進行分詞。 */ @Test public void termQuery() throws IOException { RestHighLevelClient client = new RestHighLevelClient( RestClient.builder(new HttpHost("localhost", 9200, "http")) ); SearchRequest request = new SearchRequest(); //設置要查詢的索引 request.indices("student"); //SearchSourceBuilder SearchSourceBuilder builder = new SearchSourceBuilder(); //查詢條件:age=30 builder.query(QueryBuilders.termQuery("age", "30")); request.source(builder); //發送請求并獲取響應 SearchResponse response = client.search(request, RequestOptions.DEFAULT); for (SearchHit hit : response.getHits()) { log.info(hit.getSourceAsString()); } //{"name":"zhangsan","nickname":"zhangsan","sex":"男","age":30} //{"name":"zhangsan02","nickname":"zhangsan02","sex":"女","age":30} client.close(); //關閉連接 } ``` **3. 分頁查詢** ```java /** * 分頁查詢 */ @Test public void pageQuery() throws IOException { RestHighLevelClient client = new RestHighLevelClient( RestClient.builder(new HttpHost("localhost", 9200, "http")) ); SearchRequest request = new SearchRequest(); //設置要查詢的索引 request.indices("student"); //構建SearchSourceBuilder SearchSourceBuilder builder = new SearchSourceBuilder(); //查詢所有文檔 builder.query(QueryBuilders.matchAllQuery()); //構建分頁查詢 //從第1頁開始(第一頁默認從0開始), from=(pageNum?1)?size, pageNum為當前第幾頁 builder.from(0); //每頁顯示2條數據 builder.size(2); request.source(builder); //發送請求并獲取響應 SearchResponse response = client.search(request, RequestOptions.DEFAULT); for (SearchHit hit : response.getHits()) { log.info(hit.getSourceAsString()); } //{"name":"zhangsan","nickname":"zhangsan","sex":"男","age":30} //{"name":"lisi","nickname":"lisi","sex":"男","age":20} client.close(); } ``` **4. 排序** ```java /** * 排序 */ @Test public void orderQuery() throws IOException { RestHighLevelClient client = new RestHighLevelClient( RestClient.builder(new HttpHost("localhost", 9200, "http")) ); //構建查詢request SearchRequest request = new SearchRequest(); //設置要查詢的索引 request.indices("student"); //構建查詢體 SearchSourceBuilder builder = new SearchSourceBuilder(); //查詢所有 builder.query(QueryBuilders.matchAllQuery()); //排序,升序排序 builder.sort("age", SortOrder.ASC); request.source(builder); //發送請求并獲取響應 SearchResponse response = client.search(request, RequestOptions.DEFAULT); for (SearchHit hit : response.getHits()) { log.info(hit.getSourceAsString()); } //{"name":"lisi","nickname":"lisi","sex":"男","age":20} //{"name":"zhangsan","nickname":"zhangsan","sex":"男","age":30} //{"name":"zhangsan02","nickname":"zhangsan02","sex":"女","age":30} //{"name":"wangwu","nickname":"wangwu","sex":"女","age":40} //{"name":"zhangsan01","nickname":"zhangsan01","sex":"女","age":50} client.close(); } ``` **5. 過濾字段** ```java /** * 過濾字段 */ @Test public void filterQuery() throws IOException { //獲取客戶端 RestHighLevelClient client = new RestHighLevelClient( RestClient.builder(new HttpHost("localhost", 9200, "http")) ); //構建查詢request SearchRequest request = new SearchRequest(); //設置要查詢的索引 request.indices("student"); //構建查詢體 SearchSourceBuilder builder = new SearchSourceBuilder(); //查詢條件:查詢所有 builder.query(QueryBuilders.matchAllQuery()); //查詢過濾字段 String[] excludes = {}; //不查詢的字段 String[] includes = {"name", "age"}; //只查詢的字段 builder.fetchSource(includes, excludes); request.source(builder); //發送請求并獲取響應 SearchResponse response = client.search(request, RequestOptions.DEFAULT); for (SearchHit hit : response.getHits()) { log.info(hit.getSourceAsString()); } //{"name":"zhangsan","age":30} //{"name":"lisi","age":20} //{"name":"wangwu","age":40} //{"name":"zhangsan01","age":50} //{"name":"zhangsan02","age":30} client.close(); } ``` **6. 組合查詢** ```java /** * 組合查詢 * bool把各種其它查詢通過must(必須 )、must_not(必須不)、should(應該)的方式進行組合。 */ @Test public void boolQuery() throws IOException { //獲取客戶端 RestHighLevelClient client = new RestHighLevelClient( RestClient.builder(new HttpHost("localhost", 9200, "http")) ); //構建搜索請求對象 SearchRequest request = new SearchRequest(); //設置要查詢的索引 request.indices("student"); //構建查詢體 SearchSourceBuilder builder = new SearchSourceBuilder(); //構建bool查詢體 BoolQueryBuilder boolBuilder = new BoolQueryBuilder(); //條件1:必須age=30 boolBuilder.must(QueryBuilders.matchQuery("age", "30")); //條件2:必須name!=zhangsan boolBuilder.mustNot(QueryBuilders.matchQuery("name", "zhangsan")); //條件3:應該sex=男 boolBuilder.should(QueryBuilders.matchQuery("sex", "男")); builder.query(boolBuilder); request.source(builder); //發送請求并獲取響應 SearchResponse response = client.search(request, RequestOptions.DEFAULT); for (SearchHit hit : response.getHits()) { log.info(hit.getSourceAsString()); } //{"name":"zhangsan02","nickname":"zhangsan02","sex":"女","age":30} } ``` **7. 范圍查詢** ```java /** * 范圍查詢 * gt 大于(>) * gte 大于等于(>=) * lt 小于(<) * lte 小于等于(<=) */ @Test public void rangeQuery() throws IOException { //獲取客戶端 RestHighLevelClient client = new RestHighLevelClient( RestClient.builder(new HttpHost("localhost", 9200, "http")) ); //構建搜索請求對象 SearchRequest request = new SearchRequest(); //設置要查詢的索引 request.indices("student"); //構建查詢體 SearchSourceBuilder builder = new SearchSourceBuilder(); //構建范圍查詢體 RangeQueryBuilder rangeBuilder = QueryBuilders.rangeQuery("age"); rangeBuilder.gte("30"); //age大于等于30 rangeBuilder.lte("40"); //age小于等于40 builder.query(rangeBuilder); request.source(builder); //發送請求并獲取響應 SearchResponse response = client.search(request, RequestOptions.DEFAULT); for (SearchHit hit : response.getHits()) { log.info(hit.getSourceAsString()); } //{"name":"zhangsan","nickname":"zhangsan","sex":"男","age":30} //{"name":"wangwu","nickname":"wangwu","sex":"女","age":40} //{"name":"zhangsan02","nickname":"zhangsan02","sex":"女","age":30} } ``` **8. 模糊查詢** ```java /** * 模糊查詢:返回包含與搜索字詞相似的字詞的文檔。 * 1)編輯距離是將一個術語轉換為另一個術語所需的一個字符更改的次數。這些更改可以包括: * * 1、更改字符(box → fox) * * 2、刪除字符(black → lack) * * 3、插入字符(sic → sick) * * 4、轉置兩個相鄰字符(act → cat) * 為了找到相似的術語,`fuzzy` 查詢會在指定的編輯距離內創建一組搜索詞的所有可能的變體或擴展。然后查詢返回每個擴展的完全匹配。 * 通過 `fuzziness` 修改編輯距離。一般使用默認值 AUTO,根據術語的長度生成編輯距離。 */ @Test public void fuzzyQuery() throws IOException { //獲取客戶端 RestHighLevelClient client = new RestHighLevelClient( RestClient.builder(new HttpHost("localhost", 9200, "http")) ); //構建搜索請求對象 SearchRequest request = new SearchRequest(); //設置要查詢的索引 request.indices("student"); //構建查詢體 SearchSourceBuilder builder = new SearchSourceBuilder(); //模糊查詢 builder.query(QueryBuilders .fuzzyQuery("name", "zhangsan") .fuzziness(Fuzziness.AUTO)); request.source(builder); //發送請求并獲取響應 SearchResponse response = client.search(request, RequestOptions.DEFAULT); for (SearchHit hit : response.getHits()) { log.info(hit.getSourceAsString()); } //{"name":"zhangsan","nickname":"zhangsan","sex":"男","age":30} //{"name":"zhangsan01","nickname":"zhangsan01","sex":"女","age":50} //{"name":"zhangsan02","nickname":"zhangsan02","sex":"女","age":30} } ``` **9. 高亮查詢** ```java /** * 高亮查詢 */ @Test public void highlightQuery() throws IOException { //獲取客戶端 RestHighLevelClient client = new RestHighLevelClient( RestClient.builder(new HttpHost("localhost", 9200, "http")) ); SearchRequest request = new SearchRequest(); //設置要查詢的索引 request.indices("student"); //構建SearchSourceBuilder SearchSourceBuilder builder = new SearchSourceBuilder(); //查詢name=zhangsan TermsQueryBuilder termsBuilder = QueryBuilders.termsQuery("name", "zhangsan"); builder.query(termsBuilder); //構建高亮字段 HighlightBuilder highlightBuilder = new HighlightBuilder(); highlightBuilder.preTags("<font color='red'>"); //前置標簽 highlightBuilder.postTags("</font>"); //后置標簽 highlightBuilder.field("name"); //要高亮的字段 builder.highlighter(highlightBuilder); request.source(builder); //發送請求并獲取響應 SearchResponse response = client.search(request, RequestOptions.DEFAULT); for (SearchHit hit : response.getHits()) { log.info(hit.getSourceAsString()); Map<String, HighlightField> highlightFieldMap = hit.getHighlightFields(); log.info("高亮結果:{}", highlightFieldMap); } //{"name":"zhangsan","nickname":"zhangsan","sex":"男","age":30} //高亮結果:{name=[name], fragments[[<font color='red'>zhangsan</font>]]} } ``` **10. 聚合查詢** ```java /** * 聚合查詢 */ @Test public void aggsQuery() throws IOException { //獲取客戶端 RestHighLevelClient client = new RestHighLevelClient( RestClient.builder(new HttpHost("localhost", 9200, "http")) ); SearchRequest request = new SearchRequest(); //設置要查詢的索引 request.indices("student"); SearchSourceBuilder builder = new SearchSourceBuilder(); //求最大值 //searchSourceBuilder.aggregation(AggregationBuilders.max("max_age").field("age")); //最小值 //searchSourceBuilder.aggregation(AggregationBuilders.min("min_age").field("age")); //stats可以一次性將max/min/avg/count/sum求出 builder.aggregation(AggregationBuilders.stats("stats_age").field("age")); request.source(builder); SearchResponse response = client.search(request, RequestOptions.DEFAULT); //...,"aggregations":{"stats#stats_age":{"count":5,"min":20.0,"max":50.0,"avg":34.0,"sum":170.0}}} log.info("{}", response); client.close(); } ``` **11. 分組統計** ```java /** * 分組統計 */ @Test public void groupbyQuery() throws IOException { RestHighLevelClient client = new RestHighLevelClient( RestClient.builder(new HttpHost("localhost", 9200, "http"))); SearchRequest request = new SearchRequest(); request.indices("student"); //設置要搜索的索引 SearchSourceBuilder builder = new SearchSourceBuilder(); builder.aggregation(AggregationBuilders.terms("age_groupby").field("age")); request.source(builder); SearchResponse response = client.search(request, RequestOptions.DEFAULT); //... // {"key":30,"doc_count":2}, // {"key":20,"doc_count":1}, // {"key":40,"doc_count":1}, // {"key":50,"doc_count":1}]}}} log.info("{}", response); } ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看