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

 更新时间:2021年08月03日 10:12:30   作者:シ風箏  
这篇文章主要介绍了Java使用elasticsearch基础API使用案例讲解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下

1.依赖

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

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
		</dependency>

2.配置+测试源码

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

@Configuration
public class ElasticSearchConfig {
    @Bean
    public RestHighLevelClient restHighLevelClient() {
        RestHighLevelClient client = new RestHighLevelClient(
                RestClient.builder(
                        new HttpHost("127.0.0.1", 9200, "http")
                ));
        return client;
    }
}

以下是详细的测试代码:

@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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java中使用辗转相除法求最大公约数

    Java中使用辗转相除法求最大公约数

    这篇文章主要介绍了Java中使用辗转相除法求最大公约数,本文直接给出代码实例,需要的朋友可以参考下
    2015-05-05
  • 浅谈java随机数的陷阱

    浅谈java随机数的陷阱

    这篇文章主要介绍了浅谈java随机数的陷阱,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • springboot中redis的缓存穿透问题实现

    springboot中redis的缓存穿透问题实现

    这篇文章主要介绍了springboot中redis的缓存穿透问题实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • java区分绝对路径和相对路径的方法

    java区分绝对路径和相对路径的方法

    这篇文章主要介绍了java区分绝对路径和相对路径的方法,实例分析了java针对路径操作的相关技巧,需要的朋友可以参考下
    2015-04-04
  • java自定义实现base64编码转换

    java自定义实现base64编码转换

    本文主要介绍了java 自定义实现base64编码转换的方法,具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • springboot集成elasticsearch7的图文方法

    springboot集成elasticsearch7的图文方法

    本文记录springboot集成elasticsearch7的方法,本文通过图文实例代码相结合给大家介绍的非常详细,需要的朋友参考下吧
    2021-05-05
  • Java Integer.ValueOf()的一些了解

    Java Integer.ValueOf()的一些了解

    这篇文章主要介绍了Java Integer.ValueOf()的一些了解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • Springboot项目实现Mysql多数据源切换的完整实例

    Springboot项目实现Mysql多数据源切换的完整实例

    这篇文章主要给大家介绍了关于Springboot项目实现Mysql多数据源切换的完整实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • 以实例讲解Objective-C中的KVO与KVC机制

    以实例讲解Objective-C中的KVO与KVC机制

    这篇文章主要介绍了以实例讲解Objective-C中的KVO与KVC机制,即Key-Value-Observing与Key-Value-Coding,需要的朋友可以参考下
    2015-09-09
  • Spring项目运行依赖spring-contex解析

    Spring项目运行依赖spring-contex解析

    这篇文章主要介绍了Spring项目运行依赖spring-contex解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05

最新评论