Java使用elasticsearch基础API使用案例讲解

时间:2022-03-27 23:59:06

1.依赖

我用的是 springboot 2.2.5.RELEASE 版本,这里只贴出主要依赖:

?
1
2
3
4
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>

2.配置+测试源码

这里根据elasticsearch服务端的地址进行配置:

?
1
2
3
4
5
6
7
8
9
10
11
@Configuration
public class ElasticSearchConfig {
    @Bean
    public RestHighLevelClient restHighLevelClient() {
        RestHighLevelClient client = new RestHighLevelClient(
                RestClient.builder(
                        new HttpHost("127.0.0.1", 9200, "http")
                ));
        return client;
    }
}

以下是详细的测试代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
@SpringBootTest
class EsApiApplicationTests {
 
    @Autowired
    @Qualifier(value = "restHighLevelClient")
    private RestHighLevelClient client;
 
    // 1.创建索引
    @Test
    void createIndex() throws IOException {
        // 创建请求
        CreateIndexRequest request = new CreateIndexRequest("yz_index");
        // 执行请求,获取响应
        CreateIndexResponse response = client.indices().create(request, RequestOptions.DEFAULT);
        System.out.println("creatIndex--" + response);
    }
 
    // 2.获取索引,判断是否存在
    @Test
    void getIndex() throws IOException {
        // 创建请求
        GetIndexRequest request = new GetIndexRequest("yz_index");
        // 执行请求,获取响应
        boolean exists = client.indices().exists(request, RequestOptions.DEFAULT);
        System.out.println("getIndex--exists--" + exists);
    }
 
    // 3.删除索引
    @Test
    void deleteIndex() throws IOException {
        // 创建请求
        DeleteIndexRequest request = new DeleteIndexRequest("yz_index");
        // 执行请求
        AcknowledgedResponse response = client.indices().delete(request, RequestOptions.DEFAULT);
        System.out.println("deleteIndex--" + response);
    }
 
    // 4.添加文档
    @Test
    void addDocument() throws IOException {
        // 创建对象
        User user = new User("Java虚拟机", 30);
        // 创建索引,即获取索引
        IndexRequest indexRequest = new IndexRequest("yz_index");
        // 添加规则 /index/_doc/id
        indexRequest.id("1");
        indexRequest.timeout(TimeValue.timeValueSeconds(1));
        // 存入对象
        indexRequest.source(JSON.toJSONString(user), XContentType.JSON);
        // 发送请求
        IndexResponse response = client.index(indexRequest, RequestOptions.DEFAULT);
        System.out.println("addDocument--" + response);
    }
 
    // 5.获取文档是否存在
    @Test
    void getDocument() throws IOException {
        // 创建get请求
        GetRequest getRequest = new GetRequest("yz_index", "1");
        // 不获取返回的_source的上下文
        getRequest.fetchSourceContext(new FetchSourceContext(false));
        getRequest.storedFields("_none_");
        // 发送请求
        boolean exists = client.exists(getRequest, RequestOptions.DEFAULT);
        System.out.println("addDocument--" + exists);
 
        // 6.获取文档信息
        if (exists) {
            // 创建请求
            GetRequest getRequest1 = new GetRequest("yz_index", "1");
            // 发送请求
            GetResponse response = client.get(getRequest1, RequestOptions.DEFAULT);
            System.out.println("source--" + response.getSource());
            System.out.println("getDocument--" + response.getSourceAsString());
        }
 
        // 7.更新文档信息
        if (exists) {
            // 创建请求
            UpdateRequest updateRequest = new UpdateRequest("yz_index", "1");
            updateRequest.timeout("1s");
            // 修改内容
            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) {
            // 创建请求
            DeleteRequest deleteRequest = new DeleteRequest("yz_index", "1");
            deleteRequest.timeout("1s");
            // 修改内容
            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");
        // 创建对象
        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));
        }
        // 执行请求
        BulkResponse response = client.bulk(bulkRequest, RequestOptions.DEFAULT);
        System.out.println("batchAddDocument--" + response.status());
    }
 
    // 10.查询
    @Test
    void search() throws IOException {
        // 创建请求
        SearchRequest searchRequest = new SearchRequest("jd_index");
        // 构建搜索条件
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
        TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("title", "杜伽");// 精确查询
        searchSourceBuilder.query(termQueryBuilder);
        searchSourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));
        searchRequest.source(searchSourceBuilder);
        // 执行请求
        SearchResponse response = client.search(searchRequest, RequestOptions.DEFAULT);
        // 解析查询结果
        System.out.println("search--getHists--" + JSON.toJSONString(response.getHits()));
        for (SearchHit documentFields : response.getHits()) {
            System.out.println("search--getHist--" + documentFields.getSourceAsMap());
        }
    }
}

到此这篇关于Java使用elasticsearch基础API使用案例讲解的文章就介绍到这了,更多相关Java使用elasticsearch基础API内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/weixin_39168541/article/details/119301894