日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java search 不能使用方法_elasticsearch(七)java 搜索功能Search Request的介绍与使用...

發布時間:2025/4/5 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java search 不能使用方法_elasticsearch(七)java 搜索功能Search Request的介绍与使用... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

前端幾節都是介紹的基于單個文檔或著單個文檔庫的操作,

本節開始將介紹基于所有或指定的任何個數文檔庫的操作的api

SearchRequest用于與搜索文檔、聚合、定制查詢有關的任何操作,還提供了在查詢結果的基于上,對于匹配的關鍵詞進行突出顯示的方法。

1,首先創建搜索請求對象:

SearchRequest searchRequest = new SearchRequest();

2,對搜索請求進行基本參數設置

1)設置查詢指定的某個文檔庫:

SearchRequest searchRequest = new SearchRequest("posts");

searchRequest.types("doc");

2)查詢多個文檔庫,其中多個文檔庫名之間用逗號隔開

SearchRequest searchRequest = new SearchRequest("posts2","posts", "posts2", "posts1");

或者這樣設置:

SearchRequest searchRequest = new SearchRequest();

// 指定只能在哪些文檔庫中查詢:可以添加多個且沒有限制,中間用逗號隔開

searchRequest.indices("posts2","posts", "posts2", "posts1");

默認是去所有文檔庫中進行查詢

3)指定查詢的文檔庫中的文檔類型:

searchRequest.types("doc1");

或多種類型,同樣是文檔類型之間用逗號隔開:

searchRequest.types("doc1", "doc1", "doc2");

4)設置指定查詢的路由分片

searchRequest.routing("routing");

5)用preference方法去指定優先去某個分片上去查詢(默認的是隨機先去某個分片)

searchRequest.preference("_local");

6)向主搜索請求中可以添加搜索內容的特征參數

a.創建? 搜索內容參數設置對象:SearchSourceBuilder

SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();

b.?將SearchSourceBuilder對象添加到搜索請求中:

searchRequest.source(searchSourceBuilder);

3,為搜索的文檔內容對象SearchSourceBuilder設置參數:

大多控制搜索內容的行為參數都可以在SearchSourceBuilder上進行設置,SearchSourceBuilder包含與Rest API的搜索請求主體中類似的參數選項。 以下是一些常見選項的幾個示例:

1)查詢包含指定的內容:

a.查詢所有的內容

searchSourceBuilder.query(QueryBuilders.matchAllQuery());

b.查詢包含關鍵詞字段的文檔:如下,表示查詢出來所有包含user字段且user字段包含kimchy值的文檔

sourceBuilder.query(QueryBuilders.termQuery("user", "kimchy"));

c.上面是基于QueryBuilders查詢選項的,另外還可以使用MatchQueryBuilder配置查詢參數

MatchQueryBuilder matchQueryBuilder = new MatchQueryBuilder("user", "kimchy");

// 啟動模糊查詢

matchQueryBuilder.fuzziness(Fuzziness.AUTO);

// 在匹配查詢上設置前綴長度選項

matchQueryBuilder.prefixLength(3);

// 設置最大擴展選項以控制查詢的模糊過程

matchQueryBuilder.maxExpansions(10);

d.也可以使用QueryBuilders實用程序類創建QueryBuilder對象。此類提供了可用于使用流暢的編程樣式創建QueryBuilder對象的輔助方法:

QueryBuilder matchQueryBuilder = QueryBuilders.matchQuery("user", "kimchy")

.fuzziness(Fuzziness.AUTO)

.prefixLength(3)

.maxExpansions(10);

注:無論用于創建它的方法是什么,都必須將QueryBuilder對象添加到SearchSourceBuilder

searchSourceBuilder.query(matchQueryBuilder);

3)設置查詢的起始索引位置和數量:如下表示從第1條開始,共返回5條文檔數據

sourceBuilder.from(0);

sourceBuilder.size(5);

4)設置查詢請求的超時時間:如下表示60秒沒得到返回結果時就認為請求已超時

sourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));

5)默認情況下,搜索請求會返回文檔_source的內容,但與Rest API中的內容一樣,您可以覆蓋此行為。例如,您可以完全關閉_source檢索:

sourceBuilder.fetchSource(false);

該方法還接受一個或多個通配符模式的數組,以控制以更精細的方式包含或排除哪些字段

String[] includeFields = new String[] {"title", "user", "innerObject.*"};

String[] excludeFields = new String[] {"_type"};

sourceBuilder.fetchSource(includeFields, excludeFields);

本節內容待續,敬請關注 ....

總結

以上是生活随笔為你收集整理的java search 不能使用方法_elasticsearch(七)java 搜索功能Search Request的介绍与使用...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。