Es7 JavaApi 常用方法


pom

<!--es-->
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>${es.version}</version>
<exclusions>
<exclusion>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
</exclusion>
<exclusion>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-client</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>${es.version}</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-client</artifactId>
<version>${es.version}</version>
</dependency>

准備配置

@Configuration
public class EsUtils {
//鏈接
private static String HOST_NAME = "10.xx.xx.xx";
//端口
private static int PORT = 9200;
//傳輸協議
private static String SCHEME ="http";
//創建client
// public static RestHighLevelClient client = null;

//url
private static final HttpHost[] HTTP_HOSTS = {
new HttpHost(HOST_NAME,PORT,SCHEME),
new HttpHost("10.xx.xx.xx",PORT,SCHEME),
new HttpHost("10.xx.xx.xx",PORT,SCHEME)
};
@Bean(name="getEs")
public static RestHighLevelClient client(){
RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(HTTP_HOSTS));
return client;
}

 }

 

引入

@Autowired

@Qualifier("getEs")
private RestHighLevelClient esClient;

 

常用Api

1、在指定索引下添加數據  (沒有該索引會自動創建),source里最好放map

IndexRequest request = new IndexRequest().index("索引名").source(要添加的數據); //添加數據時候不需要指定id,es會自動生成id
IndexResponse index = EsUtils.client().index(request,RequestOptions.DEFAULT);

2、模糊查詢()

SearchRequest request = new SearchRequest("索引名"); 
SearchSourceBuilder builder = new SearchSourceBuilder();
String key = "查詢的數據";
builder.query(QueryBuilders.multiMatchQuery(key,"","")); //key 后面如果加要搜索的字段,不加默認檢索全部。
request.source(builder);
SearchResponse response = esUtils.client().search(request,RequestOptions.DEFAULT); //搜索操作
SearchHit[] hits = response.getHits().getHits(); //獲取搜索之后的數據

3、修改 (修改需要指定es的id,doc里放的是新數據。)

需要注意的是es里的修改其實是覆蓋了原先id里的數據。如果是要修改某一部分數據,需要把全部數據都重新傳一遍

UpdateRequest request = new UpdateRequest().index("TEST").id("1").doc(map);
UpdateResponse response = esUtils.client().update(request,RequestOptions.DEFAULT);

4、刪除(刪除需要提供es該條數據的id)

DeleteRequest deleteRequest = new DeleteRequest().index("").id("");
DeleteResponse delete = EsUtils.client().delete(deleteRequest, RequestOptions.DEFAULT);

 

5、查看索引是否存在
public static void getIndex(String indexName){
try{
GetIndexRequest request = new GetIndexRequest(indexName);
boolean exists = esUtils.client().indices().exists(request, RequestOptions.DEFAULT);
System.out.println(exists);
}catch (Exception e){
logger.info("{}:索引庫已存在!",indexName);
}
}

6、批量操作

BulkRequest bulkRequest = new BulkRequest();

//  bulkRequest.add 里可以寫增刪改操作,批量操作可以理解成    運行之后一次性執行裝填在bulk里的操作

 bulkRequest.add(new IndexRequest().index(“索引名”).source(“數據”));

BulkResponse bulk = esClient.bulk(bulkRequest, RequestOptions.DEFAULT); 

搜索的一些JavaApi

 https://blog.csdn.net/weixin_39977641/article/details/114168065 

這是最基礎的增刪改查。

 

以下是es其他api介紹,看介紹用到哪個再去查

1.多條件查詢結構BoolQueryBuilder boolQueryBuilder=QuerBuilders.boolQuery()
2.boolQueryBuilder.must(QuerBuilders.termQuery(精確查找單個))且條件,可拼接多個
3.QuerBuilders.termsQuery(精確查找集合)
4.boolQueryBuilder.mustNot(且非)
5.QuerBuilders.rangeQuery(字段).gt(值)大於,時間有效
6.QuerBuilders.rangeQuery(字段).lt(值)小於,時間有效
7.QuerBuilders.rangeQuery(字段).gte(值)大於等於,時間有效
8.QuerBuilders.rangeQuery(字段).lte(值)小於等於,時間有效
9.QuerBuilders.queryStringQuery(’’’’+值+"").defaultFiled(字段)包含
10.QuerBuilders.prefixQuery(字段,值)開頭是
11.QuerBuilders.existQuery(字段),QuerBuilders.wildcardQuery(字段,"")配合使用可以判斷不為空
12.boolQueryBuilder.mustNot(QuerBuilders.wildcardQuery(字段,""))可以判斷為空
13.RestClientBuilder builder = RestClient.builder(new httpHost(ip,端口,“http”)),RestHighLevelClient restHighLevelClient= new RestHighLevelClient(builder),創建es客戶端
14.SerachSourceBuilder serachSourceBuilder = new SerachSourceBuilder(),創建搜索工具類
15.SerachRequest serachRequest = new SerachRequest(索引名),serachRequest.setTypes(類型),創建搜索工具類
16.serachSourceBuilder.from(起始頁),serachSourceBuilder.size(頁數)
17.serachSourceBuilder.sort(字段,sort-順序還是逆序))
18.serachSourceBuilder.timeout(),設置超時時間
19.serachSourceBuilder.query(boolQueryBuilder),放入拼接好的查詢條件
20.serachSourceBuilder.trackTotalHits(true),設置支持千萬級別數據查詢
21.serachRequest.source(serachSourceBuilder),設置查詢參數
22.SearchResponse response =restHighLevelClient.search(serachRequest,RequestOptions.DEFAULT),執行查詢
23.restHighLevelClient.close()釋放客戶端
24.for(SearchHit searchHit : response.getHits().getHits()){Map<String,object> sourceMap=searchHit.getSourceMap() 遍歷Map獲取數據},從ES查詢結果里面獲取查詢的結果數據
25.response.getHits().getTotalHits().value(),獲取符合條件的所有數據條數
26.BulkRequest request =new BulkRequest(),創建插入數據的請求
27.request.add(new IndexRequest(索引名,類型名,數據ID).sourc(數據json,XcontentType.Json)),拼接書記入入庫請求
28.restHighLevelClient.bulk(request,RequestOptions.DEFAULT),數據入庫

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM