• Elasticsearch—(MacOs)


    1⃣️环境准备

    1. 准备 Java 环境:终端输入 java -version 命令来确认版本是否符合 Elasticsearch 要求
    2. 下载并解压 Elasticsearch:前往(https://www.elastic.co/downloads/elasticsearch)选择适合你的 Mac 系统的 Elasticsearch 版本进行下载
    3. 设置 Elasticsearch 配置:在 config 目录下找到并打开 elasticsearch.yml 配置文件。根据你的需求,修改其中的一些设置,比如监听的端口、集群名称等
    4. 启动 Elasticsearch:打开终端,进入 Elasticsearch 解压目录,执行以下命令启动 Elasticsearch:
      ./bin/elasticsearch
      
    5. 验证 Elasticsearch 是否正常运行:打开浏览器,访问 http://localhost:9200 地址,如果能看到返回的 JSON 格式的信息,说明 Elasticsearch 已经成功安装并运行。

    🌟使用步骤

    1. 配置依赖:在项目的构建文件(例如Maven的pom.xml)中添加Elasticsearch相关的依赖。这通常包括Spring Data Elasticsearch和Elasticsearch的Java客户端依赖。
    2. 配置Elasticsearch连接信息:在Spring的配置文件中,配置Elasticsearch连接的一些必要信息,例如主机名、端口号等。这些信息将用于与Elasticsearch建立连接。
    3. 创建Elasticsearch实体类:在Java中创建实体类,可以使用注解标注字段与Elasticsearch中的文档属性的映射关系。这些实体类通常使用JPA或Spring Data Elasticsearch提供的注解来简化与Elasticsearch的数据交互。
    4. 编写Elasticsearch相关的数据访问接口:使用Spring Data Elasticsearch提供的Repository接口,定义与Elasticsearch进行数据交互的查询方法。可以通过方法命名规则或自定义查询语句实现各种查询操作。
    5. 注入Elasticsearch的Repository:在需要使用Elasticsearch的地方,通过依赖注入方式获取到Elasticsearch的Repository。可以在Service层或Controller层中使用该Repository来进行查询、保存、更新等操作。
    6. 执行Elasticsearch操作:通过调用Elasticsearch的Repository方法,执行对Elasticsearch的数据操作。可以执行各种查询,例如基于关键字的全文搜索、聚合操作等。

    2⃣️使用

    要使用Elasticsearch进行增删改查等操作,你可以通过Postman来实现。下面我将提供一个使用RESTful API来演示的示例:

    💫创建索引库

    💫添加文档(添加行)

    💫查询索引库

    💫修改索引库

    💫删除索引库

     3⃣️与Java使用

    如何使用Java与Elasticsearch进行索引的创建、文档的增加、查询、修改和删除操作

    💠添加Elasticsearch Maven依赖:

    pom.xml文件中添加以下依赖项:

    1. <dependencies>
    2. <dependency>
    3. <groupId>org.elasticsearch.client</groupId>
    4. <artifactId>elasticsearch-rest-high-level-client</artifactId>
    5. <version>7.13.3</version>
    6. </dependency>
    7. <dependency>
    8. <groupId>org.elasticsearch.client</groupId>
    9. <artifactId>elasticsearch-rest-client</artifactId>
    10. <version>7.13.3</version>
    11. </dependency>
    12. </dependencies>

    💠创建索引库:

    1. import org.elasticsearch.client.RequestOptions;
    2. import org.elasticsearch.client.RestHighLevelClient;
    3. import org.elasticsearch.client.indices.CreateIndexRequest;
    4. import org.elasticsearch.client.indices.CreateIndexResponse;
    5. import org.elasticsearch.client.RestClient;
    6. import org.elasticsearch.common.settings.Settings;
    7. import org.elasticsearch.common.xcontent.XContentBuilder;
    8. import org.elasticsearch.common.xcontent.XContentType;
    9. import org.elasticsearch.common.xcontent.json.JsonXContent;
    10. // 创建RestHighLevelClient客户端
    11. RestHighLevelClient client = new RestHighLevelClient(
    12. RestClient.builder("localhost:9200"));
    13. // 创建索引请求
    14. CreateIndexRequest request = new CreateIndexRequest("my_index");
    15. request.settings(Settings.builder()
    16. .put("index.number_of_shards", 1)
    17. .put("index.number_of_replicas", 0));
    18. // 创建映射
    19. XContentBuilder mapping = JsonXContent.contentBuilder()
    20. .startObject()
    21. .startObject("properties")
    22. .startObject("user")
    23. .field("type", "keyword")
    24. .endObject()
    25. .startObject("postDate")
    26. .field("type", "date")
    27. .endObject()
    28. .startObject("message")
    29. .field("type", "text")
    30. .endObject()
    31. .endObject()
    32. .endObject();
    33. request.mapping(mapping);
    34. // 执行创建索引请求
    35. CreateIndexResponse response = client.indices().create(request, RequestOptions.DEFAULT);
    36. if (response.isAcknowledged()) {
    37. System.out.println("索引创建成功");
    38. } else {
    39. System.out.println("索引创建失败");
    40. }
    41. // 关闭客户端
    42. client.close();

    💠添加文档:

    1. import org.elasticsearch.action.index.IndexRequest;
    2. import org.elasticsearch.action.index.IndexResponse;
    3. import org.elasticsearch.client.RequestOptions;
    4. import org.elasticsearch.client.RestHighLevelClient;
    5. import org.elasticsearch.common.xcontent.XContentType;
    6. import org.elasticsearch.client.RestClient;
    7. // 创建RestHighLevelClient客户端
    8. RestHighLevelClient client = new RestHighLevelClient(
    9. RestClient.builder("localhost:9200"));
    10. // 构建索引请求
    11. IndexRequest request = new IndexRequest("my_index");
    12. request.id("1");
    13. String jsonString = "{" +
    14. "\"user\":\"John\"," +
    15. "\"postDate\":\"2023-09-25\"," +
    16. "\"message\":\"This is a sample document\"" +
    17. "}";
    18. request.source(jsonString, XContentType.JSON);
    19. // 执行索引请求
    20. IndexResponse response = client.index(request, RequestOptions.DEFAULT);
    21. // 获取响应结果
    22. String index = response.getIndex();
    23. String id = response.getId();
    24. if (response.getResult() == DocWriteResponse.Result.CREATED) {
    25. System.out.println("文档创建成功,索引:" + index + ",id:" + id);
    26. } else if (response.getResult() == DocWriteResponse.Result.UPDATED) {
    27. System.out.println("文档更新成功,索引:" + index + ",id:" + id);
    28. }
    29. // 关闭客户端
    30. client.close();

    💠查询索引库

    1. import org.elasticsearch.action.search.SearchRequest;
    2. import org.elasticsearch.action.search.SearchResponse;
    3. import org.elasticsearch.client.RequestOptions;
    4. import org.elasticsearch.client.RestHighLevelClient;
    5. import org.elasticsearch.index.query.QueryBuilders;
    6. import org.elasticsearch.search.SearchHit;
    7. import org.elasticsearch.search.SearchHits;
    8. import org.elasticsearch.search.builder.SearchSourceBuilder;
    9. import org.elasticsearch.client.RestClient;
    10. // 创建RestHighLevelClient客户端
    11. RestHighLevelClient client = new RestHighLevelClient(
    12. RestClient.builder("localhost:9200"));
    13. // 构建搜索请求
    14. SearchRequest request = new SearchRequest("my_index");
    15. SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
    16. searchSourceBuilder.query(QueryBuilders.matchQuery("message", "sample"));
    17. request.source(searchSourceBuilder);
    18. // 执行搜索请求
    19. SearchResponse response = client.search(request, RequestOptions.DEFAULT);
    20. // 处理搜索结果
    21. SearchHits hits = response.getHits();
    22. for (SearchHit hit : hits.getHits()) {
    23. String sourceAsString = hit.getSourceAsString();
    24. System.out.println(sourceAsString);
    25. }
    26. // 关闭客户端
    27. client.close();

    💠修改索引库:

    1. import org.elasticsearch.action.update.UpdateRequest;
    2. import org.elasticsearch.action.update.UpdateResponse;
    3. import org.elasticsearch.client.RequestOptions;
    4. import org.elasticsearch.client.RestHighLevelClient;
    5. import org.elasticsearch.common.xcontent.XContentFactory;
    6. import org.elasticsearch.client.RestClient;
    7. // 创建RestHighLevelClient客户端
    8. RestHighLevelClient client = new RestHighLevelClient(
    9. RestClient.builder("localhost:9200"));
    10. // 构建更新请求
    11. UpdateRequest request = new UpdateRequest("my_index", "1")
    12. .doc(XContentFactory.jsonBuilder()
    13. .startObject()
    14. .field("message", "Updated document")
    15. .endObject());
    16. // 执行更新请求
    17. UpdateResponse response = client.update(request, RequestOptions.DEFAULT);
    18. String index = response.getIndex();
    19. String id = response.getId();
    20. if (response.getResult() == DocWriteResponse.Result.UPDATED) {
    21. System.out.println("文档更新成功,索引:" + index + ",id:" + id);
    22. } else if (response.getResult() == DocWriteResponse.Result.NOOP) {
    23. System.out.println("文档未发生更新,索引:" + index + ",id:" + id);
    24. }
    25. // 关闭客户端
    26. client.close();

    💠删除索引库:

    1. import org.elasticsearch.action.delete.DeleteRequest;
    2. import org.elasticsearch.action.delete.DeleteResponse;
    3. import org.elasticsearch.client.RequestOptions;
    4. import org.elasticsearch.client.RestHighLevelClient;
    5. import org.elasticsearch.client.RestClient;
    6. // 创建RestHighLevelClient客户端
    7. RestHighLevelClient client = new RestHighLevelClient(
    8. RestClient.builder("localhost:9200"));
    9. // 构建删除请求
    10. DeleteRequest request = new DeleteRequest("my_index", "1");
    11. // 执行删除请求
    12. DeleteResponse response = client.delete(request, RequestOptions.DEFAULT);
    13. String index = response.getIndex();
    14. String id = response.getId();
    15. if (response.getResult() == DocWriteResponse.Result.DELETED) {
    16. System.out.println("文档删除成功,索引:" + index + ",id:" + id);
    17. } else if (response.getResult() == DocWriteResponse.Result.NOT_FOUND) {
    18. System.out.println("文档未找到,索引:" + index + ",id:" + id);
    19. }
    20. // 关闭客户端
    21. client.close();

  • 相关阅读:
    2:第一章:认识JVM规范1:JVM简介;
    LeetCode算法心得——全排列(回溯型排列)
    3.2-Docker Image概述
    软件代码设计-小优化(四)
    【Linux】常用命令汇总
    Matlab 2012a 面向对象(1):二维点,地理点和地理线的类设计和实现
    基于springboot+vue的大学生智能消费记账系统
    每日一题day7-1652. 拆炸弹
    【Spring】简单的登录案例和配套知识
    游戏服务器领域的 “状态同步”、“非状态同步”
  • 原文地址:https://blog.csdn.net/lcannal/article/details/133269943