前言
我們整合es直接給es發(fā)請(qǐng)求就可以了,但是現(xiàn)在有很多方式去調(diào)用es的接口,那都有那些呢?
一.java調(diào)用es的方式和工具
訪問es端口 | 訪問方式 | 使用工具 | 缺點(diǎn) |
---|---|---|---|
9300 | TCP | transport-api.jar | 不適配es版本,es 8.0之后棄用。 |
9200 | HTTP | JestClient | 非官方,對(duì)應(yīng)es版本更新慢。 |
9200 | HTTP | RestTemplate | 模擬發(fā)送http請(qǐng)求,但是很多請(qǐng)求需要自己封裝。 |
9200 | HTTP | HttpClient | 模擬發(fā)送http請(qǐng)求,但是很多請(qǐng)求需要自己封裝。 |
9200 | HTTP | Elasticsearch-Rest-Client | 官方RestClient,封裝了es的操作,API層次分明,上手簡單。 |
二.java集成Elasticsearch-Rest-Client
Elasticsearch-Rest-Client官方文檔
1.引入pom
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.3.1</version>
</dependency>
2.導(dǎo)入版本不一致問題
比如你想導(dǎo)入 7.3.1版本的,但是你導(dǎo)入之后發(fā)現(xiàn)不是7.3.1版本的。
原因: 因?yàn)閟pringboot默認(rèn)對(duì)Elasticsearch版本進(jìn)行了引入。
3.編寫配置類
@Configuration
public class EsConfig {
//發(fā)送請(qǐng)求時(shí)的請(qǐng)求設(shè)置項(xiàng)(全局通用)
public static final RequestOptions COMMON_OPTIONS;
static {
RequestOptions.Builder builder = RequestOptions.DEFAULT.toBuilder();
//通用設(shè)置
// builder.addHeader("Authorization", "Bearer " + TOKEN);
// builder.setHttpAsyncResponseConsumerFactory(
// new HttpAsyncResponseConsumerFactory
// .HeapBufferedResponseConsumerFactory(30 * 1024 * 1024 * 1024));
COMMON_OPTIONS = builder.build();
}
//注入
@Bean
public RestHighLevelClient config(){
RestClientBuilder builder = null;
//es的ip、訪問的端口號(hào)、網(wǎng)絡(luò)協(xié)議
builder = RestClient.builder(new HttpHost("127.0.0.1",9200,"http"));
RestHighLevelClient client = new RestHighLevelClient(builder);
return client;
}
}
4.測試類
@SpringBootTest
@RunWith(SpringRunner.class)
public class test {
@Autowired
RestHighLevelClient restClient;
//測試從java保存數(shù)據(jù)到es
@Test
public void testEs() throws IOException {
IndexRequest indexRequest = new IndexRequest("ikun");
indexRequest.id("1");
Kunkun kunkun = new Kunkun();
kunkun.setJineng("唱跳rap籃球");
kunkun.setName("小black子");
//把對(duì)象轉(zhuǎn)為json字符串
String s = JSON.toJSONString(kunkun);
//保存的數(shù)據(jù)
indexRequest.source(s, XContentType.JSON);
//執(zhí)行保存的操作(同步操作,文檔里面有寫異步請(qǐng)求)
IndexResponse index = restClient.index(indexRequest, EsConfig.COMMON_OPTIONS);
}
@Data
class Kunkun {
private String jineng;
private String name;
}
}
4.1 執(zhí)行前
4.2 執(zhí)行后
5.其他篇章
一.Elasticsearch快速入門及使用文章來源:http://www.zghlxwxcb.cn/news/detail-644511.html
二.Elasticsearch進(jìn)階文章來源地址http://www.zghlxwxcb.cn/news/detail-644511.html
到了這里,關(guān)于三.SpringBoot整合Elasticsearch的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!