分布式搜索引擎ElasticSearch 二 淡淡的烟草味﹌ 2021-11-11 04:04 340阅读 0赞 # 继续上一篇的学习 # # 今天讲解的是 # 1. ## 使用SpringDataElasticSerach完成搜索微服务 ## 2. ## logstash完成mysql与ElasticSearch的同步 ## # 1,使用SpringDataElasticSerach完成搜索微服务 # pom文件导入依赖的jar包 <dependencies> <!--elasticsearch 包--> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-elasticsearch</artifactId> <version>3.0.6.RELEASE</version> </dependency> <dependency> <groupId>tom.tensquare</groupId> <artifactId>tensquare_common</artifactId> <version>1.0-SNAPSHOT</version> </dependency> </dependencies> 修改aplication.yml配置文件 server: port: 9007 spring: application: name: tensquare-search data: elasticsearch: cluster-nodes: 127.0.0.1:9300 创建实体类 package com.tensquare.search.pojo; import org.springframework.data.annotation.Id; import org.springframework.data.elasticsearch.annotations.Document; import org.springframework.data.elasticsearch.annotations.Field; import java.io.Serializable; @Document(indexName = "tensquare_article",type = "article") //相当于数据库名称和表名称 public class Article implements Serializable { @Id private String id;//ID //是否索引 就是看该域能否被搜索 //是否分词 搜索的时候是全文进行匹配还是单词进行匹配 //是否存储 是否显示在页面上 // 创建的时候 查询的时候 @Field(index= true ,analyzer="ik_max_word",searchAnalyzer="ik_max_word") private String title;//标题 @Field(index= true ,analyzer="ik_max_word",searchAnalyzer="ik_max_word") private String content;//文章正文 private String state;//审核状态 public String getId() { return id; } public void setId(String id) { this.id = id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } public String getState() { return state; } public void setState(String state) { this.state = state; } } 上面都有注释,仔细看看 创建dao层 public interface ArticleDao extends ElasticsearchRepository<Article,String> { } 注意他要通过继承ElasticsearchRepository<Article,String>来实现对其的操作,使用的是springdata 创建其他的service和conntroller层 # 2,logstash完成mysql与ElasticSearch的同步 # 安装: 直接解压就行 测试: 进入bin目录 输入:logstash ‐e 'input \{ stdin \{ \} \} output \{ stdout \{\} \}' ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2x1b2RvbmcxNTAx_size_16_color_FFFFFF_t_70][] 一般情况,在实际的项目开发过程中都是写 -f 后面跟文件的路径 ## (1)在logstash-5.6.8安装目录下创建文件夹mysqletc (名称随意) ## ## (2)文件夹下创建mysql.conf (名称随意) ,内容如下: ## input { jdbc { # mysql jdbc connection string to our backup databse jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/tensquare_article?characterEncoding=UTF8" # the user we wish to excute our statement as jdbc_user => "root" jdbc_password => "969188" # the path to our downloaded jdbc driver jdbc_driver_library => "E:\logstash-5.6.8\mysqletc\mysql-connector-java-5.1.46.jar" # the name of the driver class for mysql jdbc_driver_class => "com.mysql.jdbc.Driver" jdbc_paging_enabled => "true" jdbc_page_size => "50" #以下对应着要执行的sql的绝对路径。 #statement_filepath => "" statement => "select id,title,content,state from tb_article" #定时字段 各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新(测试结果,不同的话请留言指出) schedule => "* * * * *" } } output { elasticsearch { #ESIP地址与端口 hosts => "127.0.0.1:9200" #ES索引名称(自己定义的) index => "tensquare_article" #自增ID编号 document_id => "%{id}" document_type => "article" } stdout { #以JSON格式输出 codec => json_lines } } ## (3)将mysql驱动包mysql-connector-java-5.1.46.jar拷贝至D:/logstash5.6.8/mysqletc/ 下 。D:/logstash-5.6.8是你的安装目录 ## ## (4)执行命令 ## <table style="width:500px;"> <tbody> <tr> <td> <h2>logstash ‐f ../mysqletc/mysql.conf</h2> </td> </tr> </tbody> </table> ## 欧了!! ## 有啥不懂的请联系我 qq: 2498414290 微信:luo2498414290 [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2x1b2RvbmcxNTAx_size_16_color_FFFFFF_t_70]: /images/20211109/453712b3d1d64f789a7abe7ea04ad6ac.png
还没有评论,来说两句吧...