Java使用elasticsearch基礎(chǔ)API使用案例講解
1.依賴
我用的是 springboot 2.2.5.RELEASE 版本,這里只貼出主要依賴:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency>
2.配置+測試源碼
這里根據(jù)elasticsearch服務(wù)端的地址進(jìn)行配置:
@Configuration
public class ElasticSearchConfig {
@Bean
public RestHighLevelClient restHighLevelClient() {
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(
new HttpHost("127.0.0.1", 9200, "http")
));
return client;
}
}
以下是詳細(xì)的測試代碼:
@SpringBootTest
class EsApiApplicationTests {
@Autowired
@Qualifier(value = "restHighLevelClient")
private RestHighLevelClient client;
// 1.創(chuàng)建索引
@Test
void createIndex() throws IOException {
// 創(chuàng)建請求
CreateIndexRequest request = new CreateIndexRequest("yz_index");
// 執(zhí)行請求,獲取響應(yīng)
CreateIndexResponse response = client.indices().create(request, RequestOptions.DEFAULT);
System.out.println("creatIndex--" + response);
}
// 2.獲取索引,判斷是否存在
@Test
void getIndex() throws IOException {
// 創(chuàng)建請求
GetIndexRequest request = new GetIndexRequest("yz_index");
// 執(zhí)行請求,獲取響應(yīng)
boolean exists = client.indices().exists(request, RequestOptions.DEFAULT);
System.out.println("getIndex--exists--" + exists);
}
// 3.刪除索引
@Test
void deleteIndex() throws IOException {
// 創(chuàng)建請求
DeleteIndexRequest request = new DeleteIndexRequest("yz_index");
// 執(zhí)行請求
AcknowledgedResponse response = client.indices().delete(request, RequestOptions.DEFAULT);
System.out.println("deleteIndex--" + response);
}
// 4.添加文檔
@Test
void addDocument() throws IOException {
// 創(chuàng)建對象
User user = new User("Java虛擬機(jī)", 30);
// 創(chuàng)建索引,即獲取索引
IndexRequest indexRequest = new IndexRequest("yz_index");
// 添加規(guī)則 /index/_doc/id
indexRequest.id("1");
indexRequest.timeout(TimeValue.timeValueSeconds(1));
// 存入對象
indexRequest.source(JSON.toJSONString(user), XContentType.JSON);
// 發(fā)送請求
IndexResponse response = client.index(indexRequest, RequestOptions.DEFAULT);
System.out.println("addDocument--" + response);
}
// 5.獲取文檔是否存在
@Test
void getDocument() throws IOException {
// 創(chuàng)建get請求
GetRequest getRequest = new GetRequest("yz_index", "1");
// 不獲取返回的_source的上下文
getRequest.fetchSourceContext(new FetchSourceContext(false));
getRequest.storedFields("_none_");
// 發(fā)送請求
boolean exists = client.exists(getRequest, RequestOptions.DEFAULT);
System.out.println("addDocument--" + exists);
// 6.獲取文檔信息
if (exists) {
// 創(chuàng)建請求
GetRequest getRequest1 = new GetRequest("yz_index", "1");
// 發(fā)送請求
GetResponse response = client.get(getRequest1, RequestOptions.DEFAULT);
System.out.println("source--" + response.getSource());
System.out.println("getDocument--" + response.getSourceAsString());
}
// 7.更新文檔信息
if (exists) {
// 創(chuàng)建請求
UpdateRequest updateRequest = new UpdateRequest("yz_index", "1");
updateRequest.timeout("1s");
// 修改內(nèi)容
User user = new User("小米", 10);
updateRequest.doc(JSON.toJSONString(user), XContentType.JSON);
UpdateResponse response = client.update(updateRequest, RequestOptions.DEFAULT);
System.out.println("updateDocument--" + response.status());
}
// 8.刪除文檔信息
if (exists) {
// 創(chuàng)建請求
DeleteRequest deleteRequest = new DeleteRequest("yz_index", "1");
deleteRequest.timeout("1s");
// 修改內(nèi)容
DeleteResponse response = client.delete(deleteRequest, RequestOptions.DEFAULT);
System.out.println("deleteDocument--" + response.status());
}
}
// 9.批量添加文檔
@Test
void batchAddDocument() throws IOException {
// 批量請求
BulkRequest bulkRequest = new BulkRequest();
bulkRequest.timeout("10s");
// 創(chuàng)建對象
ArrayList<User> userArrayList = new ArrayList<>();
userArrayList.add(new User("小米1", 1));
userArrayList.add(new User("小米2", 2));
userArrayList.add(new User("小米3", 3));
userArrayList.add(new User("小米4", 4));
userArrayList.add(new User("小米5", 5));
// 添加請求
for (int i = 0; i < userArrayList.size(); i++) {
bulkRequest.add(new IndexRequest("yz_index")
.id("" + (i + 2))
.source(JSON.toJSONString(userArrayList.get(i)), XContentType.JSON));
}
// 執(zhí)行請求
BulkResponse response = client.bulk(bulkRequest, RequestOptions.DEFAULT);
System.out.println("batchAddDocument--" + response.status());
}
// 10.查詢
@Test
void search() throws IOException {
// 創(chuàng)建請求
SearchRequest searchRequest = new SearchRequest("jd_index");
// 構(gòu)建搜索條件
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("title", "杜伽");// 精確查詢
searchSourceBuilder.query(termQueryBuilder);
searchSourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));
searchRequest.source(searchSourceBuilder);
// 執(zhí)行請求
SearchResponse response = client.search(searchRequest, RequestOptions.DEFAULT);
// 解析查詢結(jié)果
System.out.println("search--getHists--" + JSON.toJSONString(response.getHits()));
for (SearchHit documentFields : response.getHits()) {
System.out.println("search--getHist--" + documentFields.getSourceAsMap());
}
}
}
到此這篇關(guān)于Java使用elasticsearch基礎(chǔ)API使用案例講解的文章就介紹到這了,更多相關(guān)Java使用elasticsearch基礎(chǔ)API內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java實(shí)現(xiàn)LeetCode(報(bào)數(shù))
這篇文章主要介紹了Java實(shí)現(xiàn)LeetCode(報(bào)數(shù)),本文通過使用java實(shí)現(xiàn)leetcode的報(bào)數(shù)題目和實(shí)現(xiàn)思路分析,需要的朋友可以參考下2021-06-06
MyBatis-Plus中公共字段的統(tǒng)一處理的實(shí)現(xiàn)
在開發(fā)中經(jīng)常遇到多個(gè)實(shí)體類有共同的屬性字段,這些字段屬于公共字段,本文主要介紹了MyBatis-Plus中公共字段的統(tǒng)一處理的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2023-08-08
java面向?qū)ο笤O(shè)計(jì)原則之單一職責(zé)與依賴倒置原則詳解
這篇文章主要介紹了java面向?qū)ο笤O(shè)計(jì)原則之單一職責(zé)與依賴倒置原則的分析詳解,有需要的朋友可以借鑒參考下,希望可以有所幫助,祝大家多多進(jìn)步早日升職加薪2021-10-10
MyBatis/mybatis-plus項(xiàng)目打印SQL的方法實(shí)現(xiàn)
SpringBoot項(xiàng)目中,經(jīng)常需要打印SQL語句及其參數(shù),本文就來介紹一下MyBatis/mybatis-plus項(xiàng)目打印SQL的方法實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-07-07

