【Go】elasticsearch + go-mysql-elasticsearch 实现中文分词、高亮效果_数据库 分词 高亮_cbdgz的博客-CSDN博客


本站和网页 https://blog.csdn.net/weixin_45685541/article/details/124770303 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

【Go】elasticsearch + go-mysql-elasticsearch 实现中文分词、高亮效果_数据库 分词 高亮_cbdgz的博客-CSDN博客
【Go】elasticsearch + go-mysql-elasticsearch 实现中文分词、高亮效果
cbdgz
已于 2022-05-14 16:52:17 修改
511
收藏
分类专栏:
golang
开发流程
项目部署
文章标签:
elasticsearch
mysql
golang
中文分词
搜索引擎
于 2022-05-14 16:50:06 首次发布
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_45685541/article/details/124770303
版权
golang
同时被 3 个专栏收录
8 篇文章
0 订阅
订阅专栏
开发流程
3 篇文章
0 订阅
订阅专栏
项目部署
7 篇文章
0 订阅
订阅专栏
引言
本文使用的开源项目库如下:1.MySQL数据实时同步到elasticsearch的工具库:go-mysql-elasticsearch 2.elasticsearch 中文分词插件:elasticsearch-analysis-ik
温馨提示:本文使用的是7.17.3版本的elasticsearch,故安装的IK分词器插件也是7.17.3版本的,小伙伴们可以根据自身elasticsearch版本的需要到elasticsearch-analysis-ik仓库的Release页面选择适合的插件版本进行安装。
准备工作
bitnami/elasticsearch:7 容器的安装 为了方便开发管理,我选择了把elasticsearch安装到docker容器当中
安装的docker-compose.yml文化如下
version: '3'
services:
elasticsearch:
container_name: elasticmy
image: docker.io/bitnami/elasticsearch:7
ports:
- '9200:9200'
- '9300:9300'
volumes:
- './elasticsearch_data:/bitnami/elasticsearch/data'
volumes:
elastic3:
driver: local
容器启动方式:
docker-compose up -d
如果容器无法正常启动,则可能需要给宿主主机的elastic_data目录赋予权限
chmod 777 elasticsearch_data
为elasticsearch安装安装中文分词器插件
以root身份进入到elasticsearch容器中
docker exec -u root -it elasticmy bash
进入容器后,在容器的/bin目录下执行安装分词器插件命令
elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.17.3/elasticsearch-analysis-ik-7.17.3.zip
安装完毕后重启elasticsearch容器,至此elasticsearch的分词器插件就安装完毕了😄
docker restart elasticmy
在elasticsearch中创建对应的索引
## 这里的索引名称我和MySQL中对应的数据库名称同名
## 使用include_type_name 是为了可以预先自定义索引的_type,不自定义的话,elasticsearch
## 会默认生成名称为_doc的_type
PUT myblog?include_type_name=true
"mappings": {
"t_article": { // 自定义的_type,这里我选择其名称和数据库要同步的表名相同
"properties": {
"article_content": {// 为文档中的article_content字段设置分词器
"type": "text",
"analyzer": "ik_max_word",
"fielddata": true
},
"article_title": {// 为文档中的article_title字段设置分词器
"type": "text",
"analyzer": "ik_max_word",
"fielddata": true
使用go-mysql-elasticsearchs实时同步MySQL中myBlog数据库中的t_article表中的数据到elasticsearch中
先拉取go-mysql-elasticsearch的代码
git clone https://github.com/go-mysql-org/go-mysql-elasticsearch.git
进入代码的根目录对代码进行编译
make
编译成功后会在代码根目录下的bin目录下生成go-mysq-elasticsearch的可执行程序:
编写代码根目录下的river.toml配置文件,建立其elasticsearch和MySQL同步的桥梁,其中除了配置好elasticsearch和MySQL的服务地址信息外,最关键的配置项就是rule配置项了,在本文中的涉及的实际例子中进行如下配置(读者小伙伴需要根据自身的数据结构进行相应的定义) [[rule]]
schema = "myBlog"// 要同步的数据库名称
table = "t_article" // 要同步的数据库表
index = "myBlog" // 同步到elasticsearch中的索引名称
type = "t_article" // 同步到elasticsearch中的_type名称
运行./bin/go-mysql-elasticsearch目录下的程序开始进行同步
进行数据的高亮搜索
进行高亮搜索
GET myblog/_search
"query": {
"bool": {
"should": [
"multi_match": {
"query": "加锁",//搜索的关键词
"fields": [ // 要进行搜索的字段
"article_content",
"article_title"
],
"minimum_should_match": 1
},
"highlight": {
"fields": {
"article_content": {},//高亮的字段
"article_title": {}//高亮的字段
},
"pre_tags": "<span style=\"color: red\">", //高亮左标记
"post_tags": "</span>" // 高亮右标记
高亮且分词的搜索结果
cbdgz
关注
关注
点赞
收藏
打赏
知道了
评论
【Go】elasticsearch + go-mysql-elasticsearch 实现中文分词、高亮效果
引言本文使用的开源项目库如下:1.MySQL数据实时同步到elasticsearch的工具库:https://github.com/go-mysql-org/go-mysql-elasticsearch2.elasticsearch 中文分词插件:https://github.com/medcl/elasticsearch-analysis-ik温馨提示:本文使用的是7.17.3版本的elasticsearch,故安装的IK分词器插件也是7.17.3版本的,小伙伴们可以根据自身elasticsea
复制链接
扫一扫
专栏目录
Docker安装ElasticSearch
u014526891的博客
09-24
1万+
上一篇我们介绍了Docker的一些入门,这篇我们来实战安装下ElasticSearch。
一、Docker 部署 ElasticSearch
1、从仓库中查找所有ElasticSearch的镜像
[root@iZwz99dhxbd6xwly17tb3bZ app]# docker search elasticsearch
INDEX NAME ...
go-elasticsearch的简单例子
XiaoAnGeGe的博客
08-12
931
go-elasticsearch的简单例子 api ik 分词
参照:https://godoc.org/github.com/elastic/go-elasticsearch
简单的例子:
package main
import (
"bytes"
"context"
"encoding/json"
"fmt"
"github.com/elastic/go-elasticsearch/v8"
"github.com/elastic/go-elasticsearch/v
参与评论
您还未登录,请先
登录
后发表或查看评论
Elasticsearch: analyzer
Elastic 中国社区官方博客
09-03
5389
如果大家之前看过我写的文章“开始使用Elasticsearch (3)”,在文章的最后部分写了有关于analyzer的有关介绍。在今天的文章中,我们来进一步了解analyzer。 analyzer执行将输入字符流分解为token的过程,它一般发生在两个场合:
在indexing的时候,也即在建立索引的时候
在searching的时候,也即在搜索时,分析需要搜索的词语
什么是analysis...
MySQL5.7自带分词搜索使用
嗨皮螃的博客
12-09
1167
如果MySQL数据库是低于5.7版本的,需要备份数据库并且更新为5.7
原理:
ngram全文解析器
ngram就是一段文字里面连续的n个字的序列。
ngram全文解析器能够对文本进行分词,每个单词是连续的n个字的序列。
例如,用ngram全文解析器对“恭喜发财”进行分词:
n=1: '恭', '喜', '发', '财'
n=2: '恭喜', '喜发', '发财'
n=3: '恭喜发', '喜发财'
n=4: '恭喜发财'
准备:
MySQL 中使用全局变量 ngram_token_
go-mysql-elasticsearch+mysql 同步 ElasticSearch(标贝科技)
DataBaker的博客
03-14
3420
一、Elasticsearch:https://www.elastic.co/downloads/past-releases
1、Elasticsearch无需安装,解压即用。
2、进入elasticsearch/bin目录,执行./elasticsearh即可启动。
3、es 绑定了两个端口:
9300:Java程序访问的端口
9200:浏览器、postman访问的端口
4、浏览器中访问:http://ip:9200 即可
二、ik(分词) : https://github.com/medcl/el
elasticsearch同步mysql数据库神器之go-mysql-elasticsearch
kaijixin的博客
10-08
2391
go-mysql-elasticsearch 是国内作者开发的一款插件。测试表明:该插件优点:能实现同步增、删、改、查操作。不足之处(待完善的地方):
1、日志不是很详细,但是能满足基本需求;
2、初始化时,无法自动同步mysql中存在的以前的数据,需要自行解决初始导入(如重建索引批量导入)
目前我司使用的是国防科技大学的同步组件,基本符合目前需求,该组件作为不时之需
go-mys...
ElasticSearch IK热词自动热更新原理与Golang实现
xmcy001122的专栏
10-15
831
热更新概述
ik分词器本身可以从配置文件加载扩张词库,也可以从远程HTTP服务器加载。
从本地加载,则需要重启ES生效,影响比较大。所以,一般我们都会把词库放在远程
服务器上。这里主要有2种方式:
借助Nginx,在其某个目录结构下放一个dic.txt,我们只要更新这个文件,不需要重启ES也能达到热更新的目的。优点是简单,无需开发,缺点就是不够灵活。
自己开发一个HTTP接口,返回词库。注意:一行代表一个词,http body中,自己追加\n换行。
这里主要介绍第2种接口方式。
热更新原理
查看ik分词
mysql查询多关键词高亮_php实现搜索多关键词高亮显示程序代码
weixin_39728544的博客
02-02
158
关键词高亮在php中实现相对很简单,他只需要获取利用提取过来的关键词进行分词然后再利用str_replace()函数来实现替换就可以原理相对很简单。项目结构: 开始搜索: 这里搜索关键字("大""这") 开始搜索: 这里搜索关键字("大""这") 搜索结果: 高亮显示 项目所需select_db("form", $conn);mysql_query("set names 'gbk...
mysql搜索关键字高亮_给搜索关键字添加高亮,加以颜色区分
weixin_42181929的博客
02-18
1346
问题描述:如图中所示,当我单击按专业搜索时,筛选出专业中包含有关键字的专业,并且讲输入的关键字用其他颜色区分开来。结果中每个学校和每个专业都是链接.实现方法:1.首先找到专业这一列:var filterResultTable = document.getElementById("searchResult");//找到结果集合table。searchResult为table的idfor (var i...
ElasticSearch系列七:ElasticSearch搜索技术深入讲解之高亮
qq_40595922的博客
10-07
968
介绍es检索的高亮
全文搜索实战2-ik分词及搜索高亮
技术路漫漫
07-12
1530
本文通过在es中安装ik分词插件,并基于jsoup解析某网站内容并存储到mysql和es中,实现了一个完整的关键词全文搜索并高亮展示功能
实现效果预览
通过输入中国 鲁能 关键词,即可得到如下图的结果:
ik分词插件安装及测试
首先,借助ik分词插件改善中文搜索:
鉴于github直接下载很慢,根据官网说明,采用下来离线包解压安装的模式
将下载得到的 elasticsearch-analysis-ik-7.6.2.zip 解压到本地ik目录
启动 es-test 容器并进入到容器内,将上面目录拷贝到.
MySQL基础篇笔记
最新发布
QWQ___qwq的博客
01-31
311
什么是聚合函数聚合函数作用于一组数据,并对一组数据返回一个值。聚合函数类型AVG()SUM()MAX()MIN()COUNT()整数类型一共有 5 种,包括 TINYINT、SMALLINT、MEDIUMINT、INT(INTEGER)和 BIGINT。整数类型字节有符号数取值范围无符号数取值范围TINYINT1-128~1270~255SMALLINT20~65535MEDIUMINT30~167772154BIGINT8。
ElasticSearch 解析机制常见用法库 之 analyzer常用用法
热门推荐
菜刚RyuGou的专栏
05-31
1万+
写ElasticSearch的搜索Schema是一件让人头疼的事儿,看着满屏的“特殊字符”(例如:“keyword”、“nGram”等等)有种想吐的感觉:为何这么定义?定义了是什么意思?有什么效果?
为此,我总结了一些用法,希望会有所帮助。
首先,要知道一个单词或者短语,进入到ElasticSearch是如何被处理的:
文字太过枯燥,我直接上从网上扒
Elasticsearch分词调试常用工具
nanguo123的专栏
09-13
389
记录一下Elasticsearch分词调试中常用到的API和索引设置
golang 使用 elasticsearch ik 分词器
转身那一瞬
12-01
1281
golang 使用 elasticsearch
https://github.com/olivere/elastic/wiki
https://github.com/olivere/elastic
ik分词器
https://github.com/medcl/elasticsearch-analysis-ik
安装
参照词表找对应的 ik 版本
IK version
ES version
master
7.x -> master
6.x
6.x
5.x
5.x
1.10
用go-mysql-elasticsearch同步MYSQL5.7.20数据到ElasticSearch8.1.3图文教程
phplife的电子商务网上商城专栏
04-27
3170
MYSQL数据到ElasticSearch的go-mysql-elasticsearch安装方法
go-mysql-elasticsearch 使用
大海技术博客
11-07
550
无需三方工具直接监听 mysql binlog 即可同步数据到 es。服务器配置 2 核 4g 代码,mysql和es在同一台服务器上。所占内存小 cpu 水位不会飙升。开启时间 11:00 后。
Elasticsearch使用ik分词、go-mysql-elasticsearch同步工具使用以及es精准映射相关操作
晴空万里
05-27
314
一、安装ik分词器
获取ik分词器安装包
ik分词器的版本必须和elasticsearch版本一致
下载安装包 wget https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v7.12.1
解压到宿主机映射的es扩展目录
unzip /home/elasticsearch-analysis-ik-7.12.1.zip -d /docker/es/plugins/ik/
二、同步mysql工具 go-mysql-ela
go mysql elastic_go-mysql-elasticsearch实现mysql 与elasticsearch实时同步深入详解
weixin_39845347的博客
01-26
79
引言:go-mysql-elasticsearch 是国内作者开发的1款插件。测试表明:该插件优点:能实现同步增、删、改、查操作。不足的地方(待完善的地方):1、仍处理开发、相对不稳定阶段;2、没有日志,不便于排查问题及查看同步结果。本文深入详解了插件的安装、使用、增删改查同步测试。1. go-mysql-elasticsearch 插件安装步骤1:安装goyum install go步骤2:安装...
golang jieba库 分词搜索
qq_44477844的博客
08-09
1078
⚪ 有这样一个场景,某36为了推广,需要根据你的兴趣爱好给你发广·告,这个依据就是你在他游览器搜索的内容。比如36接了个广告任务,推广霸王去屑洗发水,用户在百度的时候,直接搜“霸王去屑洗发水”的很少,这时就体现了分词的力量。
⚪36将“霸王去屑洗发水”这个字符串分成“霸王”,“去屑”,“洗发水”,甚至”屑“,”洗发“。当用户搜“如何去屑?”,“洗发水成分是什么”,“洗发水能喝吗”,“霸王别姬”类似的一旦含有以上分词,该用户就被认定为潜在的”发展对象“,这样一定程度上增加了推广的准确性。
下面是Go语言字符串
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
cbdgz
CSDN认证博客专家
CSDN认证企业博客
码龄4年
暂无认证
23
原创
54万+
周排名
6万+
总排名
2万+
访问
等级
333
积分
粉丝
18
获赞
10
评论
99
收藏
私信
关注
热门文章
计算机组成原理课程设计:16条指令的微指令编写详细步骤
4734
【WebSocket】Gin利用WebSocket实现在线聊天室
2818
【fastapi】利用pyCharm为fastapi项目配置和使用环境变量
2506
计算机组成原理课程设计
2157
建立专用隧道实现目标服务器上对应服务的安全访问
1968
分类专栏
项目部署
7篇
golang
8篇
数据结构
6篇
开发流程
3篇
gRPC
2篇
小玩意
gin
1篇
web开发
1篇
fasapi
1篇
pyCharm
机器学习
1篇
计算机组成原理
1篇
笔记
4篇
牛客每日一题
2篇
牛客题库
3篇
最新评论
Golang IDEA 配置代理提高go get 下载的包的速度
cbdgz:
就是相当于go get的时候走国内的代理,而不是直接从官方仓库拉取库,所以速度比较快。GOPRIVATE是指定go get 时不走代理的域名
Golang IDEA 配置代理提高go get 下载的包的速度
北师赖皮蛇:
牛的,哥太有用啦,请问能解释一下为啥咩?
【广州大学】数据结构课程设计:神秘国度的爱情故事
2201_75964760:
为什么用一样的源代码用dev的话和你输入一样的数据输出的yes或者no不一样
【WebSocket】Gin利用WebSocket实现在线聊天室
cbdgz:
因为Gin不支持websocket
【WebSocket】Gin利用WebSocket实现在线聊天室
cbdgz:
忘记说了,使用的websocket的第三方库是github.com/gorilla/websocket。可以在项目根目录执行go get -u github.com/gorilla/websocket进行该库的下载
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
集成Gitlab CI/CD、Docker、Kubernetes来实现流水线部署
GitLab CI/CD+Docker的CI/CD部署工作流
【堆排|快排】Top-k问题
2022年11篇
2021年6篇
2020年7篇
目录
目录
分类专栏
项目部署
7篇
golang
8篇
数据结构
6篇
开发流程
3篇
gRPC
2篇
小玩意
gin
1篇
web开发
1篇
fasapi
1篇
pyCharm
机器学习
1篇
计算机组成原理
1篇
笔记
4篇
牛客每日一题
2篇
牛客题库
3篇
目录
评论
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
添加红包
祝福语
请填写红包祝福语或标题
红包数量
红包个数最小为10个
红包总金额
红包金额最低5元
余额支付
当前余额3.43元
前往充值 >
需支付:10.00元
取消
确定
下一步
知道了
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝
规则
hope_wisdom 发出的红包
打赏作者
cbdgz
你的鼓励将是我创作的最大动力
¥2
¥4
¥6
¥10
¥20
输入1-500的整数
余额支付
(余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付
您的余额不足,请更换扫码支付或充值
打赏作者
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值