搜索引擎Elasticsearch+es-mysql同步+ik分词

搜索引擎Elasticsearch+es-mysql同步+ik分词

Elasticsearch

Elasticsearch是一个搜索引擎,我个人认为可以理解为是数据库,如下图:
普通数据库 搜索引擎Elasticsearch
数据库 索引index
类型type
文档document

常用操作

  1. PUT:创建索引

    http://localhost:9200/索引名

    注意:索引名不能出现大写
    搜索引擎Elasticsearch+es-mysql同步+ik分词_第1张图片

  2. POST:增加文档

    http://localhost:9200/索引名/类型名
    {
    文档… 例如:
    “title”:“mytitle”,
    “content”:“mycontent…”
    }

搜索引擎Elasticsearch+es-mysql同步+ik分词_第2张图片
POST请求成功的 created为true
PUT请求成功的 created为false

  1. 查看文档:GET

http://localhost:9200/索引名/类型名/_search
搜索引擎Elasticsearch+es-mysql同步+ik分词_第3张图片

匹配查询:
http://localhost:9200/索引名/类型名/_search?q=文档名:文档值

  1. PUT:修改文档

http://localhost:9200/索引名/类型名/条件

  1. DELETE:删除文档
    搜索引擎Elasticsearch+es-mysql同步+ik分词_第4张图片

elasticsearch_服务端

下载安装elasticsearch,然后将bin目录配置到path环境中

elasticsearch-head-master_客户端

  1. 首先需要NodeJs环境(类似于Maven安装 js依赖),下载安装软件,将bin目录配置到path环境中
  2. 通过NodeJS(npm)在线安装国内镜像cnpm:

npm install -g cnpm --registry=https://registry.npm.taobao.org

npm - 自动从互联网下载一些插件,类似git clone
cnpm - npm的国内镜像

  1. 安装es客户端

npm install -g grunt-cli

  1. 安装依赖(需要在package.json所在目录执行)

cnpm install

  1. 启动(需要在package.json所在目录执行)

grunt server

elasticsearch-analysis-ik

首先看一下elasticsearch自带的分词器

http://localhost:9200/_analyze?analyzer=chinese&pretty=true&text=这是一句完整的话

分词效果一般,所以接下来介绍elasticsearch-analysis-ik

1.下载elasticsearch-analysis-ik,解压缩后,将目录命名为ik,存入es的plugins中
2.重启

IK:分词算法
ik_smart:智能切片(最小切片)
ik_max_word:最多切片(最多的可能性)

例如:

http://localhost:9200/_analyze?analyzer=ik_smart&pretty=true&text=这是一句完整的话
http://localhost:9200/_analyze?analyzer=ik_max_word&pretty=true&text=这是一句完整的话

自定义词库

1.在 E:\Tools\elasticsearch-5.6.8\plugins\ik\config 新建文件(注意编码,此处为UTF-8)
2.加入IKAnalyzer.cfg.xml
自定义词库
3.IKAnalyzer中的一个小bug:第一行无法识别,因此在字典中的第一行回车到第二行进行编辑即可

微服务整合elasticsearch

开启跨域功能
在\elasticsearch-5.6.8\config\elasticsearch.yml文件中增加如下字段

http.cors.enabled: true
http.cors.allow-origin: “*”

开启

使用方法:
第一步:先开启服务端,在 cmd 下输入 elasticsearch
第二步:(如需使用工具)在客户端中 package.json 所在目录打开cmd输入grunt server

logstash:es-mysql同步

1.安装解压logstash,将bin目录配置到path环境中
2.在logstash目录中编写mysql.conf文件
注意: ①ANSI编码 ② 内容不得出现汉字(包括注释)

input {
stdin {
}
jdbc {
jdbc_connection_string => “jdbc:mysql://链接地址:3306/数据库名?characterEncoding=utf-8”
jdbc_user => “用户名”
jdbc_password => “密码”
jdbc_driver_library => “E:/Tools/logstash-5.6.8/mysql-connector-java-5.1.47.jar”
jdbc_driver_class => “com.mysql.jdbc.Driver”
jdbc_paging_enabled => “true”
jdbc_page_size => “50000”
#执行语句
statement => “select id,title,description,content from tb_article”
#设置监听间隔 各字段含义(由左至右)分、时、天、月、年,全部为**默认含义为每分钟都更新
schedule => "
* * * *"
}
}
output {
elasticsearch {
hosts => “127.0.0.1:9200”
#索引名称(和代码中的index一致)
index => “articleindex”
#相关联的索引中的字段
document_id => “%{id}”
#类型名称
document_type => “article”
}
stdout {
codec => json_lines
}
}

3.在cmd执行(测试配置是否正确):

logstash -e ‘input {stdin{}} output {stdout{}}’

4.es-mysql同步

logstash -f E:\Tools\logstash-5.6.8\mysql.conf

搜索引擎Elasticsearch+es-mysql同步+ik分词_第5张图片
同步成功
搜索引擎Elasticsearch+es-mysql同步+ik分词_第6张图片
在postman中查看数据:
搜索引擎Elasticsearch+es-mysql同步+ik分词_第7张图片
数据已成功同步

你可能感兴趣的:(搜索引擎Elasticsearch+es-mysql同步+ik分词)