分布式搜索引擎ElasticSearch 二

淡淡的烟草味﹌ 2021-11-11 04:04 464阅读 0赞

继续上一篇的学习

今天讲解的是

  1. 使用SpringDataElasticSerach完成搜索微服务

  2. logstash完成mysql与ElasticSearch的同步

1,使用SpringDataElasticSerach完成搜索微服务

  1. pom文件导入依赖的jar
  2. <dependencies>
  3. <!--elasticsearch 包-->
  4. <dependency>
  5. <groupId>org.springframework.data</groupId>
  6. <artifactId>spring-data-elasticsearch</artifactId>
  7. <version>3.0.6.RELEASE</version>
  8. </dependency>
  9. <dependency>
  10. <groupId>tom.tensquare</groupId>
  11. <artifactId>tensquare_common</artifactId>
  12. <version>1.0-SNAPSHOT</version>
  13. </dependency>
  14. </dependencies>

修改aplication.yml配置文件

  1. server:
  2. port: 9007
  3. spring:
  4. application:
  5. name: tensquare-search
  6. data:
  7. elasticsearch:
  8. cluster-nodes: 127.0.0.1:9300

创建实体类

  1. package com.tensquare.search.pojo;
  2. import org.springframework.data.annotation.Id;
  3. import org.springframework.data.elasticsearch.annotations.Document;
  4. import org.springframework.data.elasticsearch.annotations.Field;
  5. import java.io.Serializable;
  6. @Document(indexName = "tensquare_article",type = "article")
  7. //相当于数据库名称和表名称
  8. public class Article implements Serializable {
  9. @Id
  10. private String id;//ID
  11. //是否索引 就是看该域能否被搜索
  12. //是否分词 搜索的时候是全文进行匹配还是单词进行匹配
  13. //是否存储 是否显示在页面上
  14. // 创建的时候 查询的时候
  15. @Field(index= true ,analyzer="ik_max_word",searchAnalyzer="ik_max_word")
  16. private String title;//标题
  17. @Field(index= true ,analyzer="ik_max_word",searchAnalyzer="ik_max_word")
  18. private String content;//文章正文
  19. private String state;//审核状态
  20. public String getId() {
  21. return id;
  22. }
  23. public void setId(String id) {
  24. this.id = id;
  25. }
  26. public String getTitle() {
  27. return title;
  28. }
  29. public void setTitle(String title) {
  30. this.title = title;
  31. }
  32. public String getContent() {
  33. return content;
  34. }
  35. public void setContent(String content) {
  36. this.content = content;
  37. }
  38. public String getState() {
  39. return state;
  40. }
  41. public void setState(String state) {
  42. this.state = state;
  43. }
  44. }

上面都有注释,仔细看看

创建dao层

  1. public interface ArticleDao extends ElasticsearchRepository<Article,String> {
  2. }

注意他要通过继承ElasticsearchRepository来实现对其的操作,使用的是springdata

创建其他的service和conntroller层

2,logstash完成mysql与ElasticSearch的同步

  1. 安装:
  2. 直接解压就行
  3. 测试:
  4. 进入bin目录
  5. 输入:logstash e 'input \{ stdin \{ \} \} output \{ stdout \{\} \}'
  6. ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2x1b2RvbmcxNTAx_size_16_color_FFFFFF_t_70][]

一般情况,在实际的项目开发过程中都是写 -f 后面跟文件的路径

(1)在logstash-5.6.8安装目录下创建文件夹mysqletc (名称随意)

(2)文件夹下创建mysql.conf (名称随意) ,内容如下:

  1. input {
  2. jdbc {
  3. # mysql jdbc connection string to our backup databse
  4. jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/tensquare_article?characterEncoding=UTF8"
  5. # the user we wish to excute our statement as
  6. jdbc_user => "root"
  7. jdbc_password => "969188"
  8. # the path to our downloaded jdbc driver
  9. jdbc_driver_library => "E:\logstash-5.6.8\mysqletc\mysql-connector-java-5.1.46.jar"
  10. # the name of the driver class for mysql
  11. jdbc_driver_class => "com.mysql.jdbc.Driver"
  12. jdbc_paging_enabled => "true"
  13. jdbc_page_size => "50"
  14. #以下对应着要执行的sql的绝对路径。
  15. #statement_filepath => ""
  16. statement => "select id,title,content,state from tb_article"
  17. #定时字段 各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新(测试结果,不同的话请留言指出)
  18. schedule => "* * * * *"
  19. }
  20. }
  21. output {
  22. elasticsearch {
  23. #ESIP地址与端口
  24. hosts => "127.0.0.1:9200"
  25. #ES索引名称(自己定义的)
  26. index => "tensquare_article"
  27. #自增ID编号
  28. document_id => "%{id}"
  29. document_type => "article"
  30. }
  31. stdout {
  32. #以JSON格式输出
  33. codec => json_lines
  34. }
  35. }

(3)将mysql驱动包mysql-connector-java-5.1.46.jar拷贝至D:/logstash5.6.8/mysqletc/ 下 。D:/logstash-5.6.8是你的安装目录

(4)执行命令







logstash ‐f ../mysqletc/mysql.conf

欧了!!

有啥不懂的请联系我 qq: 2498414290 微信:luo2498414290

发表评论

表情:
评论列表 (有 0 条评论,464人围观)

还没有评论,来说两句吧...

相关阅读