继续上一篇的学习
今天讲解的是
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