ElasticSearch
是一个基于Lucene
的分布式搜索服务器,提供多用户全文搜索和 RESTful
接口。用 Java
开发,开放源码,适用于云计算,支持实时搜索,稳定可靠,安装简便。
Elasticsearch
解决了网站或应用程序的搜索需求,提供快速、零配置、免费、易用的搜索解决方案。它通过 HTTP
和 JSON
索引数据,支持从单台到数百台的扩展,确保搜索服务器始终可用,支持多租户和实时搜索。
ElasticSearch
是Elastic Stack
的核心,同时Elasticsearch
是一个分布式、RESTful
风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。作为 Elastic Stack
的核心,Elasticsearch
集中存储数据,解决各种用例,帮助发现预期和意外情况。
官网下载:
(https://www.elastic.co/cn/downloads/elasticsearch)
tar -zxvf elasticsearch-8.13.4-linux-x86_64.tar.gz -C /usr/local
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"]
因为
ElasticSearch
不支持Root
用户直接操作,因此需要创建一个es
用户
useradd es
chown -R es:es /usr/local/elasticsearch-8.13.4
es
用户并启动Elasticsearchsu - 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"
}
在若依项目的pom.xml
中添加Elasticsearch
的依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
在application.yml
文件中添加Elasticsearch
的配置:
spring:
elasticsearch:
uris: http://127.0.0.1:9200
username: elastic
password: changeme
创建一个配置类来配置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();
}
}
创建一个Repository
接口,用于操作Elasticsearch
数据:
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface MyElasticsearchRepository extends ElasticsearchRepository<MyDocument, String> {
}
创建一个实体类来映射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
}
在你的服务类中使用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
集成到若依微服务项目中,实现强大的搜索和数据分析功能。
powered by kaifamiao