文章目录

  • 下载并且安装ES
  • 安装Head插件
  • IK分词器
  • Es跟mySql的数据同步


下载并且安装ES

Elasticsearch与MySQL数据库逻辑结构概念的对比

Elasticsearch

关系型数据库Mysql

索引(index)

数据库(databases)

类型(type)

表(table)

文档(document)

行(row)

下载ElasticSearch 5.6.8版本
https://www.elastic.co/downloads/past-releases/elasticsearch-5-6-8 资源\配套软件中也提供了安装包 无需安装,解压安装包后即可使用
在命令提示符下,进入ElasticSearch安装目录下的bin目录,执行命令

.\elasticsearch

我们打开浏览器,在地址栏输入http://127.0.0.1:9200/ 即可看到输出结果


安装Head插件

因为使用es-head工具,必须使用node js的环境支撑 Node.js 是什么? 前后台分离的时候,
前端想调用我们后端,需要依赖http请求,搭建前端的开发环境,node.js

Node.js 就是运行在服务端的 JavaScript。

Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。

Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。

安装node js
https://nodejs.org/zh-cn/点击下载并且安装安装成功后,检查环境是否正常
java更新ES数据未生效 es head 更新数据_java更新ES数据未生效

打开github head的源码
https://github.com/mobz/elasticsearch-head下载并且解压到你本地 解压后,打开dos窗口,输入指令

npm install

java更新ES数据未生效 es head 更新数据_java更新ES数据未生效_02


启动head

在解压的目录下输入指令

npm run start

java更新ES数据未生效 es head 更新数据_mysql_03


java更新ES数据未生效 es head 更新数据_bc_04


**解决跨域问题** 点击连接按钮,没有任何响应,按F12会发现如下错误 ![在这里插入图片描述]()

Access to XMLHttpRequest at ‘http://localhost:9200/’ from origin ‘http://localhost:9100’ has been blocked by CORS policy: Response to preflight request doesn’t pass access control check: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.

需要修改elaticSearch配置文件:elasticsearch.yml文件中,增加以下两句命令

http.cors.enabled: true
http.cors.allow-origin: "*"

此步为允许elasticsearch跨越访问 点击连接即可看到相关信息

重启es服务,刷新页面

java更新ES数据未生效 es head 更新数据_elasticsearch_05


java更新ES数据未生效 es head 更新数据_bc_06


java更新ES数据未生效 es head 更新数据_elasticsearch_07


IK分词器

1.IK分词器的安装以及使用

1)讲下载好的IK分词器,解压,解压后,点进去,将里面的elasticsearch文件重命名为ik

2)讲ik文件夹拷贝到elasticsearch/plugins目录下

3)重新启动,即可加载ik分词器

java更新ES数据未生效 es head 更新数据_java更新ES数据未生效_08


2.测试IK分词器的效果

IK提交两个分词算法 ik_smart 和 ik_max_word

ik_smart:最少切片

ik_max_word:最细粒度划分切片

3.自定义词库

java更新ES数据未生效 es head 更新数据_java更新ES数据未生效_09


4.测试

我们在浏览器输入:

http://localhost:9200/_analyze?analyzer=chinese&pretty=true&text=我是中国人,我爱中国

Es跟mySql的数据同步

Logstash介绍
es官方推荐的一款轻量级的日志搜索处理框架,可以方便的把分散的,多样化的日志搜集起来, 并进行自定义的处理,然后 帮你传输到指定的位置,比如某个服务器或者文件中

1.Logstash安装和测试
解压logstash,进入bin目录下

.\logstash -e 'input {stdin {} }  output{stdout{}} '

输入和输出

java更新ES数据未生效 es head 更新数据_mysql_10

  • Stdin,表示输入流,指从键盘输入
  • Stdout 表示输出流,指从显示器输出
  • -e 执行
  • -f 执行文件

2.Mysql数据导入elasticsearch
①在logstatsh的目录下创建一个新的文件夹 mysqldata名字随意)
②在新建的文件夹下,从你的maven仓库中拷贝一份新数据库的jar包(依赖)
③新建一个mysql.conf的文件(文件的编码一定要是UTF-8的文件编码)
④把一下内容拷贝到mysql.conf文件中

input {
   jdbc {
    jdbc_connection_string =>"jdbc:mysql://192.168.152.153:3306/tensquare_article?setUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC"
    jdbc_user => "root"
    jdbc_password => "root"
    jdbc_driver_library => "D:/workspace/dailywork/Liming/logstash-5.6.8/logstash-5.6.8/mysqldata/mysql-connector-java-5.1.38.jar"
    jdbc_driver_class => "com.mysql.jdbc.Driver"
    jdbc_paging_enabled => "true"
    jdbc_page_size => "50000"
    statement => "select id,title,content ,state FROM tb_article "
    schedule => "* * * * *"
	
	}
}


output {
  elasticsearch {
      hosts => "localhost:9200"
      index => "tensquare"
      document_id => "%{id}"
      document_type => "articlees"
   }

stdout {
    codec => json_lines
  }
}
  • jdbc_connection_string :需要你配置数据库连接地址
  • jdbc_user :用户名
  • jdbc_user :密码
  • jdbc_driver_library配置你本地的mysql-connector-java-5.1.38.jar包的真实路径
  • statement :查询的sql语句,并且字段一定要跟es中的type(表)保持一致
  • index :eleaticsearch中的索引库的名称 document_type:eleaticsearch中的type名称(一定是存在)
  • hosts :eleaticsearch的ip地址跟端口号 schedule :定时任务的时间表达式 (我们配置的是一分钟执行一次)

3.运行查看

.\logstash -f ..\mysqldata\mysql.conf

java更新ES数据未生效 es head 更新数据_bc_11