ElasticSearch7.6.1 实际操作

2023-10-19 18:48

本文主要是介绍ElasticSearch7.6.1 实际操作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

 

pom.xml

ElasticsearchConfig.class

User.class

DemoApplicationTests.class


  • pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.5.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.run.elasticsearch</groupId><artifactId>demo</artifactId><version>0.0.1-SNAPSHOT</version><name>demo</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version><elasticsearch.version>7.6.1</elasticsearch.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.47</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
  • ElasticsearchConfig.class

package com.run.elasticsearch.demo.config;import org.apache.http.HttpHost;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class ElasticsearchConfig {@Beanpublic RestHighLevelClient restHighLevelClient() {RestHighLevelClient restHighLevelClient = new RestHighLevelClient(RestClient.builder(new HttpHost("localhost", 9200, "http")));return restHighLevelClient;}
}
  • User.class

package com.run.elasticsearch.demo;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.stereotype.Component;@Data
@AllArgsConstructor
@NoArgsConstructor
@Component
public class User {private String name;private int age;}
  • DemoApplicationTests.class

package com.run.elasticsearch.demo;import com.alibaba.fastjson.JSON;
import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
import org.elasticsearch.action.bulk.BulkRequest;
import org.elasticsearch.action.bulk.BulkResponse;
import org.elasticsearch.action.delete.DeleteRequest;
import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.action.get.GetRequest;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.support.master.AcknowledgedResponse;
import org.elasticsearch.action.update.UpdateRequest;
import org.elasticsearch.action.update.UpdateResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.client.indices.CreateIndexRequest;
import org.elasticsearch.client.indices.CreateIndexResponse;
import org.elasticsearch.client.indices.GetIndexRequest;
import org.elasticsearch.common.unit.TimeValue;
import org.elasticsearch.common.xcontent.XContentType;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.index.query.TermQueryBuilder;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.search.fetch.subphase.FetchSourceContext;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.test.context.SpringBootTest;import java.io.IOException;
import java.util.ArrayList;
import java.util.concurrent.TimeUnit;@SpringBootTest
class DemoApplicationTests {// 面向对象来操作@Autowired@Qualifier("restHighLevelClient")private RestHighLevelClient client;// 测试索引的创建 Request PUT dong_index@Testvoid testCreateIndex() throws IOException {// 1、创建索引请求CreateIndexRequest request = new CreateIndexRequest("dong_index");// 2、客户端执行请求 IndicesClient,请求后获得响应CreateIndexResponse createIndexResponse =client.indices().create(request, RequestOptions.DEFAULT);System.out.println(createIndexResponse);}// 测试获取索引,判断其是否存在@Testvoid testExistIndex() throws IOException {GetIndexRequest request = new GetIndexRequest("dong_index2");boolean exists = client.indices().exists(request,RequestOptions.DEFAULT);System.out.println(exists);}// 测试删除索引@Testvoid testDeleteIndex() throws IOException {DeleteIndexRequest request = new DeleteIndexRequest("dong_index");// 删除AcknowledgedResponse delete = client.indices().delete(request,RequestOptions.DEFAULT);System.out.println(delete.isAcknowledged());}// 测试添加文档@Testvoid testAddDocument() throws IOException {// 创建对象User user = new User("复东", 23);// 创建请求IndexRequest request = new IndexRequest("dong_index");// 规则 put /dong_index/_doc/1request.id("1");request.timeout(TimeValue.timeValueSeconds(1));request.timeout("1s");// 将我们的数据放入请求 jsonrequest.source(JSON.toJSONString(user), XContentType.JSON);// 客户端发送请求 , 获取响应的结果IndexResponse indexResponse = client.index(request,RequestOptions.DEFAULT);System.out.println(indexResponse.toString()); //System.out.println(indexResponse.status()); // 对应我们命令返回的状态}// 获取文档,判断是否存在 get /index/doc/1@Testvoid testIsExists() throws IOException {GetRequest getRequest = new GetRequest("dong_index", "1");
// 不获取返回的 _source 的上下文了getRequest.fetchSourceContext(new FetchSourceContext(false));getRequest.storedFields("_none_");boolean exists = client.exists(getRequest, RequestOptions.DEFAULT);System.out.println(exists);}
//    // 获得文档的信息@Testvoid testGetDocument() throws IOException {GetRequest getRequest = new GetRequest("dong_index", "1");GetResponse getResponse = client.get(getRequest,RequestOptions.DEFAULT);System.out.println(getResponse.getSourceAsString()); // 打印文档的内容System.out.println(getResponse); // 返回的全部内容和命令式一样的}// 更新文档的信息@Testvoid testUpdateRequest() throws IOException {UpdateRequest updateRequest = new UpdateRequest("dong_index","1");updateRequest.timeout("1s");User user = new User("复东Java", 18);updateRequest.doc(JSON.toJSONString(user),XContentType.JSON);UpdateResponse updateResponse = client.update(updateRequest,RequestOptions.DEFAULT);System.out.println(updateResponse.status());}// 删除文档记录@Testvoid testDeleteRequest() throws IOException {DeleteRequest request = new DeleteRequest("dong_index","1");request.timeout("1s");DeleteResponse deleteResponse = client.delete(request,RequestOptions.DEFAULT);System.out.println(deleteResponse.status());}// 特殊的,真的项目一般都会批量插入数据!@Testvoid testBulkRequest() throws IOException {BulkRequest bulkRequest = new BulkRequest();bulkRequest.timeout("10s");ArrayList<User> userList = new ArrayList<>();userList.add(new User("dong1",3));userList.add(new User("dong2",3));userList.add(new User("dong3",3));userList.add(new User("sina1",3));userList.add(new User("sina1",3));userList.add(new User("sina1",3));
// 批处理请求for (int i = 0; i < userList.size() ; i++) {
// 批量更新和批量删除,就在这里修改对应的请求就可以了bulkRequest.add(new IndexRequest("dong_index").id(""+(i+1)).source(JSON.toJSONString(userList.get(i)), XContentType.JSON));}BulkResponse bulkResponse = client.bulk(bulkRequest,RequestOptions.DEFAULT);System.out.println(bulkResponse.hasFailures()); // 是否失败,返回 false 代表成功!}// 查询
// SearchRequest 搜索请求
// SearchSourceBuilder 条件构造
// HighlightBuilder 构建高亮
// TermQueryBuilder 精确查询
// MatchAllQueryBuilder
// xxx QueryBuilder 对应我们刚才看到的命令!@Testvoid testSearch() throws IOException {SearchRequest searchRequest = new SearchRequest("dong_index");
// 构建搜索条件SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();sourceBuilder.highlighter();
// 查询条件,我们可以使用 QueryBuilders 工具来实现
// QueryBuilders.termQuery 精确
// QueryBuilders.matchAllQuery() 匹配所有TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("name","sina1");
// MatchAllQueryBuilder matchAllQueryBuilder =QueryBuilders.matchAllQuery();sourceBuilder.query(termQueryBuilder);sourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));searchRequest.source(sourceBuilder);SearchResponse searchResponse = client.search(searchRequest,RequestOptions.DEFAULT);System.out.println(JSON.toJSONString(searchResponse.getHits()));System.out.println("=================================");for (SearchHit documentFields : searchResponse.getHits().getHits()) {System.out.println(documentFields.getSourceAsMap());}}}

 

这篇关于ElasticSearch7.6.1 实际操作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/241673

相关文章

实际操作理解 HTTP 缓存

实际操作理解 HTTP 缓存 网上很多优秀的文章介绍了 HTTP 缓存,但大多是文字内容。 最好结合实际操作,方便更好的理解。 实际操作就需要开启一个 HTTP 服务测试 HTTP 协议,建议使用原生的 Node.js 的 http 模块。 不建议使用 Express Koa Egg 等开发框架,因为它们内置了很多功能,不利于学习原生的 API。 开启 HTTP 服务 创建 app.j

华媒舍:3步实际操作教大家快速升级活动策划实际效果

什么叫活动策划推广?活动策划推广指通过制定目标与执行一系列活动来推广宣传企业、产品和服务。这种活动可以包括线上与线下宣传营销、社会化营销、品牌合作等各种方式。正确活动策划推广能够帮助企业在竞争激烈的市场中突围,吸引住目标群体并提高销售总额。 为何要提高活动策划推广实际效果?提高活动策划推广实际效果能够带来下列益处: 提高品牌知名度:通过有效的营销推广活动,公司的品牌将会得到大众的认同和掌握

C#中三层架构UI、BLL、DAL、Model实际操作

三层架构分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)再加上实体类库(Model) 转载请注明出自朱朱家园https://blog.csdn.net/zhgl7688 1、实体类库(Model),主要存放数据库中的表字段。 操作: (1)先建立实体类库Model,打开项目,在解决方案中右键--》添加--》新建项目--》选中类库--》改名Model--》确定 (2)选中M

企业支付宝账号开发接口教程--JAVA-UTF-8(实际操作完善中...SpringMVC+JSP)

关于即时到账的开发。审核通过。简单测试如下。 希望看的可以收藏或者赞一下哦。 1.拥有自己的支付宝企业账号。去产品商店选择适合自己的方案。并签约合同。 2.选择合适的商家收款产品并去签约。填写相应的信息 3.在商家服务会有PID和KEY是关键的东西。 4.选择自己签约的产品类型,下载对应的接口api与测试代码 即时到账收款 --alipaydirect 网银支付 -

最新价值1299的快手磁力聚星全过程实际操作课堂教学【揭密】

项目概述: 这是一个基于快手直播平台的最新付费参与的项目,名为“快手磁力聚星”。该项目提供了完整的操作教程,根据快手直播平台的风险控制规则进行调整和操作。这个项目适合各种人群,包括全职妈妈、学生以及自雇人士等。无需额外的引流方法,整个操作过程可以由一个人完成。需要使用8台安卓手机,每天工作6-8小时,能够稳定获得100-200元的收入。主要的操作内容包括追剧、玩游戏等简单的手机操作。 下

JAVA中使用if和switch实际操作

1、首先先讲一下概念。 if-else结构:用于两种相反的条件; if(条件语句){   条件语句的结果为true的时候才会运行到 } else { 条件语句的结果为true的时候才会运行到 }  switch结构:只能用于等值判断 switch(变量){//变量的类型只能时char、非long整型、String、枚举      case 值:      break;语句 //相当于分割、中断

Python执行代码的实际操作的五个步骤详细介绍

对 Python执行代码的五步骤的具体应用都了解吗?想详细了解Python执行代码在实际运行中实际操作步骤吗?如果你对其有想了了解的欲望的话,你就可以点击我们的文章对其进行一个更好的了解。 Python执行代码要经过如下过程: 1. Tokenizer进行词法分析,把源程序分解为Token 2. Parser根据Token创建CST 3. CST被转换为AST 4. AST被编

08、关于语法:resp?.data?.data 的含义与实际操作中可能遇到的问题

1、数据情况: 其一、从后端拿到的数据为: let resp.data = {"data": [],"lag_mode": 3,"totol": 0} 或: let resp.data = {"data": [],"totol": 0} 其二、目标数据为: // 想要执行 if(){} 语句中的代码; // 可以不用考虑 resp?.status === 200 这个语句,因

[jQuery学习系列六]6-jQuery实际操作小案例

[jQuery学习系列六]6-jQuery实际操作小案例 前言最后在这里po上jQuery的几个小案例. Jquery例子1_占位符使用需求: 点击第一个按钮后 自动去check 后面是否有按钮没有选中, 如有则提示错误消息. <html><head><script type="text/javascript">function check(){String.prototy

程序开发的实际操作问题

注意你的态度 在高兴的时候,难免忘乎所以; 在沮丧的时候,难免灰心丧气。 态度的千差万别取决于你心里的微妙变化, 谁也不能明察秋毫、面面俱到, 但还是小心为妙。