SpringBoot -ElasticSearch RestHighLevelClient 高階客戶端使用(2) Index操作
阿新 • • 發佈:2018-12-25
前一章講過如何將SpringBoot -ElasticSearch的高階客戶端RestHighLevelClient 整合
這一章是使用RestHighLevelClient 進行Index操作
ElasticSearch計劃7.X移出type,不再有type的操作,所有本文中將type和Index名稱設定為相同的名字.
官方API地址Java High Level REST Client
這篇就關於使用RestClient操作索引,內容就是解決問題的例項。同樣,一切版本以6.4.2為準。其他升級版本新的api不屬此列。
新增Index
由於使用RestHighLevelClient(後稱為rhlClient)時,進行Index操作,所有IndexRequest都會校驗Index,type,source,contentType不為空。
所有構建建立Index建立請求時需要將Index,type,source,contentType配置完整
因為整合了ik中文分詞器,所以“analyzer”: “ik_max_word”此處參考安裝配置ik分詞器
public boolean indexCreate() { try { CreateIndexRequest index = new CreateIndexRequest("index_name"); Map<String,Object> properties = Maps.newHashMap(); Map<String,Object> propertie = Maps.newHashMap(); propertie.put("type","text"); propertie.put("index",true); propertie.put("analyzer","ik_max_word"); properties.put("field_name",propertie); XContentBuilder builder = JsonXContent.contentBuilder(); builder.startObject() .startObject("mappings") .startObject("index_name") .field("properties",properties) .endObject() .endObject() .startObject("settings") .field("number_of_shards",3) .field("number_of_replicas",1) .endObject() .endObject(); index.source(builder); rhlClient.indices().create(index,RequestOptions.DEFAULT); return true; } catch (IOException e) { e.printStackTrace(); return false; } }
判斷Index是否存在
public boolean indexExists(String indexName) { GetIndexRequest request = new GetIndexRequest(); request.indices(indexName); try { return rhlClient.indices().exists(request, RequestOptions.DEFAULT); } catch (IOException e) { e.printStackTrace(); return false; } }
刪除Index
public boolean deleteIndex(String indexName) {
DeleteIndexRequest index = new DeleteIndexRequest(indexName);
try {
rhlClient.indices().delete(index);
return true;
} catch (IOException e) {
e.printStackTrace();
return false;
}
}