开发喵星球

若依微服务集成Elasticsearch(223)

1. Elasticsearch简介

ElasticSearch是一个基于Lucene的分布式搜索服务器,提供多用户全文搜索和 RESTful 接口。用 Java 开发,开放源码,适用于云计算,支持实时搜索,稳定可靠,安装简便。

Elasticsearch 解决了网站或应用程序的搜索需求,提供快速、零配置、免费、易用的搜索解决方案。它通过 HTTPJSON 索引数据,支持从单台到数百台的扩展,确保搜索服务器始终可用,支持多租户和实时搜索。

ElasticSearchElastic Stack的核心,同时Elasticsearch 是一个分布式、RESTful风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。作为 Elastic Stack 的核心,Elasticsearch 集中存储数据,解决各种用例,帮助发现预期和意外情况。

2. 下载

官网下载: (https://www.elastic.co/cn/downloads/elasticsearch)

3. 安装

3.1 解压到相应目录

tar -zxvf elasticsearch-8.13.4-linux-x86_64.tar.gz -C /usr/local

3.2 修改配置

cd /usr/local/elasticsearch-8.13.4/config/
vim elasticsearch.yml

添加或修改以下配置:

node.name: node-1
path.data: /usr/local/elasticsearch-8.13.4/data
path.logs: /usr/local/elasticsearch-8.13.4/logs
network.host: 127.0.0.1
http.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["127.0.0.1"]
cluster.initial_master_nodes: ["node-1"]

3.3 创建es用户

因为ElasticSearch不支持Root用户直接操作,因此需要创建一个es用户

useradd es
chown -R es:es /usr/local/elasticsearch-8.13.4

3.4 启动

su - es
/usr/local/elasticsearch-8.13.4/bin/elasticsearch
/usr/local/elasticsearch-8.13.4/bin/elasticsearch -d 

在浏览器打开9200端口地址: (http://127.0.0.1:9200/),如果出现了下面的信息,就表示已经成功。

{
    "name" : "node-1",
    "cluster_name" : "elasticsearch",
    "cluster_uuid" : "xyz123",
    "version" : {
      "number" : "8.13.4",
      "build_flavor" : "default",
      "build_type" : "tar",
      "build_hash" : "abc123",
      "build_date" : "2024-05-29T00:00:00.000Z",
      "build_snapshot" : false,
      "lucene_version" : "9.0.0",
      "minimum_wire_compatibility_version" : "7.10.0",
      "minimum_index_compatibility_version" : "7.0.0"
    },
    "tagline" : "You Know, for Search"
}

4. 在若依项目中集成Elasticsearch

4.1 引入Elasticsearch依赖

在若依项目的pom.xml中添加Elasticsearch的依赖:

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

4.2 配置Elasticsearch

application.yml文件中添加Elasticsearch的配置:

spring:
  elasticsearch:
    uris: http://127.0.0.1:9200
    username: elastic
    password: changeme

4.3 编写Elasticsearch配置类

创建一个配置类来配置Elasticsearch客户端:

import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.elasticsearch.client.ClientConfiguration;
import org.springframework.data.elasticsearch.client.RestClients;

@Configuration
public class ElasticsearchConfig {

    @Bean
    public RestHighLevelClient elasticsearchClient() {
        final ClientConfiguration clientConfiguration = ClientConfiguration.builder()
                .connectedTo("127.0.0.1:9200")
                .withBasicAuth("elastic", "changeme")
                .build();
        return RestClients.create(clientConfiguration).rest();
    }
}

4.4 创建Elasticsearch Repository

创建一个Repository接口,用于操作Elasticsearch数据:

import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface MyElasticsearchRepository extends ElasticsearchRepository<MyDocument, String> {
}

4.5 创建实体类

创建一个实体类来映射Elasticsearch文档:

import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;

@Document(indexName = "my_index")
public class MyDocument {

    @Id
    private String id;
    private String name;
    private String description;

    // Getters and Setters
}

4.6 使用Elasticsearch Repository

在你的服务类中使用Elasticsearch Repository来进行数据操作:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class MyElasticsearchService {

    @Autowired
    private MyElasticsearchRepository repository;

    public void saveDocument(MyDocument document) {
        repository.save(document);
    }

    public MyDocument findById(String id) {
        return repository.findById(id).orElse(null);
    }

    // 更多操作方法
}

通过以上步骤,你可以成功地将Elasticsearch集成到若依微服务项目中,实现强大的搜索和数据分析功能。

   
分类:Java/OOP 作者:无限繁荣, 吴蓉 发表于:2024-05-28 20:33:31 阅读量:128
<<   >>


powered by kaifamiao