使用elasticsearch的Java High Level REST Client
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用elasticsearch的Java High Level REST Client,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4362字,纯文字阅读大概需要7分钟。
内容图文
![使用elasticsearch的Java High Level REST Client](/upload/InfoBanner/zyjiaocheng/623/2572ac067fdd464ebe38646fb10db2d6.jpg)
环境
elasticsearch 7.9
java 1.8
准备测试数据
# 查询数据
post : localhost:9200/index_blog1/index_blog1/docid_00021
{"name":"abc1","age":"121" ,"content":"this is a doc abc1"}
# 查询测试
http://localhost:9200/index_blog1/index_blog1/_search?pretty
maven 依赖
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.9.3</version>
</dependency>
<repositories>
<!-- add the elasticsearch repo -->
<repository>
<id>elasticsearch-releases</id>
<url>https://artifacts.elastic.co/maven</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
查询代码
package org.example.elasticsearch;
import org.apache.http.HttpHost;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.common.unit.TimeValue;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
public class EsQueryDemo {
private static String host="127.0.0.1"; // 服务器地址
private static int port=9300; // 端口
public static final String CLUSTER_NAME = "DESKTOP-B2SJHJM"; //集群名称
// 单条件查询 name : abc1
public void queryEs() throws IOException {
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(
new HttpHost("localhost", 9200, "http")));
SearchRequest searchRequest = new SearchRequest();
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
sourceBuilder.query(QueryBuilders.termQuery("name", "abc1"));
sourceBuilder.from(0);
sourceBuilder.size(5);
sourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));
searchRequest.indices("index_blog1");
searchRequest.source(sourceBuilder);
SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
SearchHits hits = searchResponse.getHits();
for (SearchHit hit : hits.getHits()) {
System.out.println(hit.getSourceAsString());
}
client.close();
}
public static void main(String[] args) throws IOException {
EsQueryDemo esQueryDemo = new EsQueryDemo();
esQueryDemo.queryEs();
}
}
报错
执行查询代码,发现如下错误
Exception in thread "main" java.lang.NoClassDefFoundError: org/elasticsearch/common/xcontent/DeprecationHandler
at org.elasticsearch.client.RestHighLevelClient.<clinit>(RestHighLevelClient.java:1906)
at org.example.elasticsearch.EsQueryDemo.queryEs(EsQueryDemo.java:29)
at org.example.elasticsearch.EsQueryDemo.main(EsQueryDemo.java:52)
Caused by: java.lang.ClassNotFoundException: org.elasticsearch.common.xcontent.DeprecationHandler
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 3 more
经过排查为依赖中的包冲突,修改maven依赖如下 ,排除elasticsearch-rest-high-level-client
中的elasticsearch
包,另外再引入对应的elasticsearch
包
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.9.3</version>
<exclusions>
<exclusion>
<artifactId>elasticsearch</artifactId>
<groupId>org.elasticsearch</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>7.9.3</version>
</dependency>
再次执行查询,结果如下,响应正常
14:28:22.824 [main] DEBUG org.elasticsearch.client.RestClient - request [POST http://localhost:9200/index_blog1/_search?typed_keys=true&max_concurrent_shard_requests=5&ignore_unavailable=false&expand_wildcards=open&allow_no_indices=true&ignore_throttled=true&search_type=query_then_fetch&batched_reduce_size=512&ccs_minimize_roundtrips=true] returned [HTTP/1.1 200 OK]
{"name":"abc1","age":"121","content":"this is a doc abc1"}
其他基本查询
- 大于
- 小于
- 范围
- 多条件查询
- 分页
参考链接
https://www.elastic.co/guide/en/elasticsearch/client/java-rest/7.9/java-rest-high.html
内容总结
以上是互联网集市为您收集整理的使用elasticsearch的Java High Level REST Client全部内容,希望文章能够帮你解决使用elasticsearch的Java High Level REST Client所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。