Tôi đang cố nâng cấp lên ES 2.0. Tôi đã downloaed ES 2.0 và cài đặt nó trên máy tính Windows của tôi.Elasticsearch 2.0: cách xóa bằng truy vấn trong Java
Trong pom.xml của tôi, tôi đã điều sau đây:
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>2.0.0-rc1</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.plugin</groupId>
<artifactId>delete-by-query</artifactId>
<version>2.0.0-rc1</version>
</dependency>
Trong mã Java của tôi, tôi đã xóa bằng cách truy vấn theo cách sau khi sử dụng ES 1.7.3:
StringBuilder b = new StringBuilder("");
b.append("{");
b.append(" \"query\": {");
b.append(" \"term\": {");
b.append(" \"category\": " + category_value);
b.append(" }");
b.append(" }");
b.append("}");
client = getClient();
DeleteByQueryResponse response = client.prepareDeleteByQuery("myindex")
.setTypes("mydocytype")
.setSource(b.toString())
.execute()
.actionGet();
Tôi hy vọng sẽ thay thế điều này:
DeleteByQueryResponse response = client.prepareDeleteByQuery("myindex")
.setTypes("mydocytype")
.setSource(b.toString())
.execute()
.actionGet();
bằng cách ES 2.0. Googled nhưng không tìm thấy một ví dụ cho nó. Tài liệu API trực tuyến dường như quá trừu tượng đối với tôi. Tôi làm nó như thế nào?
Một câu hỏi khác: Tôi có phải cài đặt plugin xóa theo truy vấn trong máy chủ Elasticsearch không?
Cảm ơn mọi con trỏ!
CẬP NHẬT
Tôi đi theo gợi ý của Max, và đây là những gì tôi có bây giờ:
Đầu tiên, khi tạo ra các khách hàng, thực hiện cài đặt trông giống như sau:
Settings settings = Settings.settingsBuilder()
.put("cluster.name", "mycluster")
.put("plugin.types", DeleteByQueryPlugin.class.getName())
.build();
Second , tại địa điểm thực hiện xóa theo truy vấn:
DeleteByQueryResponse rsp = new DeleteByQueryRequestBuilder(client, DeleteByQueryAction.INSTANCE)
.setIndices("myindex")
.setTypes("mydoctype")
.setSource(b.toString())
.execute()
.actionGet();
Tôi cũng cài đặt xóa bằng cách cắm truy vấn bằng cách chạy sau trong thư mục gốc của ES:
bin\plugin install delete-by-query
tôi nhận được lỗi nếu tôi không cài đặt plugin này.
Sau tất cả các bước này, các bộ phận liên quan đến ES hoạt động tốt.
Xin chào Max, cảm ơn vì đã giúp tôi ra! Bạn có ý nghĩa gì bởi "sử dụng nút cục bộ"? Tôi có mọi thứ trên sổ ghi chép của mình. Ứng dụng web Java chạy trên cổng 8080 và ES chạy trên cổng 9300. Tôi phải tự khởi động từng cái một. Một điều khác: Báo cáo cài đặt của bạn bị lỗi. Tôi cập nhật mã của tôi, và luôn luôn có lỗi con trỏ null. – curious1
Xin chào, với nút cục bộ, tôi muốn sử dụng nút ES được nhúng (https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/node-client.html). Khi bạn sử dụng điều này, bạn không phải bắt đầu một ứng dụng khách elasticsearch khác. Tôi nghĩ bạn đang kết nối với nút elasticsearch của mình bằng cách sử dụng ứng dụng khách (https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/transport-client.html). Trường hợp nào bạn nhận được con trỏ null? – Max
Ok tôi thấy rằng ngay cả khi bạn không sử dụng nút nhúng, bạn phải đặt plugin.types. Tôi đang chỉnh sửa bình luận của tôi cho việc này. – Max