分布式搜索引擎ElasticSearch 二

继续上一篇的学习

今天讲解的是

  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 {} }'

     

一般情况,在实际的项目开发过程中都是写 -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)执行命令

logstash ‐f ../mysqletc/mysql.conf


欧了!!

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值