Docker 安装Elasticsearch搜索引擎 搜索优化 词库挂载 拼音分词 插件安装

news2025/1/7 19:16:21

介绍

允许用户快速索引和搜索大量的文本数据。通过使用倒排索引,它能够在海量数据中高效检索相关信息。提供灵活的查询语言,可以做全文搜索、模糊搜索、数据统计等,用来代替MYSQL的模糊搜索,MYSQL的模糊搜索不支持使用索引从而导致搜索性能特别差。

  • Mysql:擅长事务类型操作,可以确保数据的安全和一致性
  • Elasticsearch:擅长海量数据的搜索、分析、计算

在这里插入图片描述

  • 对安全性要求较高的写操作,使用mysql实现
  • 对查询性能要求较高的搜索需求,使用elasticsearch实现
  • 两者再基于某种方式,实现数据的同步,保证一致性

拉取镜像

 docker pull elasticsearch:7.12.1

运行

docker run -d \
  --name es \
  -e "discovery.type=single-node" \
  -e "xpack.security.enabled=true" \
  -e "ELASTIC_PASSWORD=qwertyuiop" \
  -v es-data:/usr/share/elasticsearch/data \
  -v es-plugins:/usr/share/elasticsearch/plugins \
  --privileged \
  -p 9200:9200 \
  -p 9300:9300 \
  --restart unless-stopped \
  elasticsearch:7.12.1

  • -e “discovery.type=single-node”: 设置 Elasticsearch 的环境变量,只运行在单节点模式(single-node)。
  • -e “xpack.security.enabled=true”: 启用密码认证
  • -e “ELASTIC_PASSWORD=qwertyuiop”: 设置管理员用户(elastic)的密码为 qwertyuiop。
  • -v es-data:/usr/share/elasticsearch/data: 挂载的数据卷
  • -v es-plugins:/usr/share/elasticsearch/plugins: 挂载的插件目录
  • –privileged: 开启外部访问
  • -p 9200:9200: 服务端口
  • -p 9300:9300: 集群内部通信使用的是 9300 端口,用于节点之间的连接和通信
  • –restart unless-stopped: 设置容器的自动重启策略,开机自动启动容器。

部署成功

访问:http://172.23.4.130:9200/
返回版本信息

{
  "name" : "cef1cc2e9f43",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "rkyxYQ7aTVSvg0hR-GrOtg",
  "version" : {
    "number" : "7.12.1",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "3186837139b9c6b6d23c3200870651f10d3343b7",
    "build_date" : "2021-04-20T20:56:39.040728659Z",
    "build_snapshot" : false,
    "lucene_version" : "8.8.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

安装分词

索引过程中用来处理文本数据的工具。它将文本分解为“单词”或“术语”来构建索引。
中文分词往往需要根据语义分析,比较复杂,这就需要用到中文分词器。

开源地址:https://github.com/infinilabs/analysis-ik

analysis-ik
中文分词器,它基于 IK Analyzer 实现,专门针对中文、日文等非英语语言的文本分析与分词。IK 分词器广泛应用于 Elasticsearch 中的文本分析,它能够帮助将输入的中文文本拆分为一个个可以索引的单元,从而提升全文搜索的准确性和性能。

安装分词器

查看数据卷

docker volume ls

查看挂载目录

 docker volume inspect es-plugins 

进入数据卷然后创建目录
创建目录

mkdir ik

把插件上传
在这里插入图片描述
重启容器

 docker restart es

查看是否载入成功

docker logs es

在这里插入图片描述


使用分词

请求地址:http://172.23.4.130:9200/_analyze
请求方式:POST
请求参数

{
    "analyzer":"standard", //分词器类型 默认是standard 中文:ik_smart
    "text":"Docker 安装Elasticsearch搜索引擎 搜索优化 词库挂载 插件安装"
    //分词文本
}

standard不支持中文的分词,所以才使用IK的中文词库

分词效果
在这里插入图片描述


自定义词库

IK词库支持自定义词库来满足开发需求 ,如:我的商城是售卖非遗的一下产品,可以对非遗的一些项目进行录入。

配置文件:/ik/config/IKAnalyzer.cfg.xml

内容如下

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
	<comment>IK Analyzer 扩展配置</comment>
	
	<!--用户可以在这里配置自己的扩展字典 -->
	<entry key="ext_dict">mx.dic</entry>
		<!--在当前目录下创建 -->

	 <!--用户可以在这里配置自己的扩展停止词字典-->
	<entry key="ext_stopwords"></entry>
	
	<!--用户可以在这里配置远程扩展字典 -->
	<!-- <entry key="remote_ext_dict">words_location</entry> -->

	<!--用户可以在这里配置远程扩展停止词字典-->
	<!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>

也就是说在同及目录下创建字典就可以直接使用了,指定文件名称即可。

停止词典:有一些词语不需要分词,如一些语气词:嗯 啊 哦 …等等语气词。

分词前

{
    "analyzer":"ik_smart",
    "text":"我喜欢梅州客家非遗"
}

返回结构

{
    "tokens": [
    ......
        {
            "token": "客家",
            "start_offset": 5,
            "end_offset": 7,
            "type": "CN_WORD",
            "position": 3
        },
        {
            "token": "非",
            "start_offset": 7,
            "end_offset": 8,
            "type": "CN_CHAR",
            "position": 4
        },
        {
            "token": "遗",
            "start_offset": 8,
            "end_offset": 9,
            "type": "CN_CHAR",
            "position": 5
        }
    ]
}

这时就可以使用自定义字典

自定义配置

<entry key="ext_dict">mx.dic</entry>

mx.dic

非遗
......

在这里插入图片描述
分词成功


拼音分词

在一些搜索网站会根据用户输入的拼音来自动进行搜索提示,这里就使用到了拼音的分词器,同样的也有对应的插件处理。要实现根据字母做补全,就必须对文档按照拼音分词。

地址:https://github.com/medcl/elasticsearch-analysis-pinyin

在这里插入图片描述
导入的方法也和中文分词器一样,然后重新启动es即可。

使用
请求体

{
    "analyzer":"pinyin",
    "text":"客家"
}

响应

{
    "tokens": [
        {
            "token": "ke",
            "start_offset": 0,
            "end_offset": 0,
            "type": "word",
            "position": 0
        },
        {
            "token": "kj",
            "start_offset": 0,
            "end_offset": 0,
            "type": "word",
            "position": 0
        },
        {
            "token": "jia",
            "start_offset": 0,
            "end_offset": 0,
            "type": "word",
            "position": 1
        }
    ]
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2272161.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NVR小程序接入平台EasyNVR使用FFmpeg取流时提示错误是什么原因呢?

在视频监控系统中&#xff0c;FFmpeg常用于从各种源&#xff08;如摄像头、文件、网络流等&#xff09;获取流媒体数据&#xff0c;这个过程通常称为“取流”。 在EasyNVR平台中&#xff0c;使用FFmpeg取流是一种常见的操作。FFmpeg作为一款强大的开源多媒体处理工具&#xff…

【电源专题】为什么测试电源的SW波形上冲振荡之前的0V电位要先来个小的下降

在同步电源的开关节点SW波形测试中,你可能会发现周期性的SW波形在上升前的一小段时间时间内会有一个小小的下跌,这个下跌会低于0V。那么这个下跌是怎么来的呢? 如下所示为某降压转换器的SW开关节点波形: 其展开后可以看到在上升之前有20ns左右的时间,SW电压是下跌…

基于EB和S32DS3.5建立基础工程

本文参考&#xff1a; https://blog.csdn.net/weixin_41660366/article/details/141949690 https://blog.csdn.net/zhoujingCSDN/article/details/142284796 0、简介 本文基于S32K312 介绍新建工程并引入EB&#xff0c;环境如下&#xff1a; MCU&#xff1a;NXP S32k312 RT…

如何申请LabVIEW软件著作权?

申请 软件著作权 时&#xff0c;若你的单位开发的应用是基于 LabVIEW 的图形化编程语言&#xff0c;你需要将 LabVIEW 程序中的图形化设计转换为源代码形式&#xff0c;以符合软件著作权申请的要求。由于LabVIEW本身是图形化编程语言&#xff0c;而不是传统的文本编程语言&…

C/C++中new/delete与malloc/free的区别及对象管理

C/C++中new/delete与malloc/free的区别及对象管理 在C/C++编程中,动态内存管理是一个核心且复杂的话题,其中new、delete、malloc和free是四个经常用于此目的的工具。尽管它们都涉及到内存的分配和释放,但它们在处理对象时的方式和效果却大相径庭。本文将通过示例来说明这些工…

GitHub 图像修复开源项目推荐【持续更新】

GFPGAN 介绍&#xff1a;GFPGAN&#xff08;Generative Facial Prior-GAN&#xff09;是由腾讯ARC&#xff08;Applied Research Center&#xff09;开发的一种实用的真实世界人脸修复算法。它专门设计用于人脸图像的生成和优化&#xff0c;尤其在低质量人脸图像的超分辨率恢复…

JWT认证实战

JWT&#xff08;JSON Web Token&#xff09;是一种轻量级的、基于 JSON 的开放标准&#xff08;RFC 7519&#xff09;&#xff0c;用于在各方之间安全地传递信息。JWT 的特点是结构简单、轻量化和跨平台支持&#xff0c;适用于用户身份验证、信息加密以及无状态的 API 访问控制…

【无标题】优秀回答统计

在Class-Aware Pseudo-Labeling (CAP) 方法中&#xff0c;类感知阈值&#xff08;Class-Aware Thresholds&#xff09;的动态调整是通过以下步骤实现的&#xff1a; 初始化阈值&#xff1a; 在训练开始时&#xff0c;为每个类别设置初始阈值。这些阈值可以基于先验知识、数据分…

arcgis模版空库怎么用(一)

这里以某个项目的数据为例&#xff1a; 可以看到&#xff0c;属性表中全部只有列标题&#xff0c;无数据内容 可能有些人会认为空库是用来往里面加入信息的&#xff0c;其实不是&#xff0c;正确的用法如下&#xff1a; 一、下图是我演示用的数据&#xff0c;我们可以看到其中…

基于深度学习的视觉检测小项目(六) 项目的信号和变量的规划

• 关于前后端分离 当前流行的一种常见的前后端分离模式是vueflask&#xff0c;vueflask模式的前端和后端之间进行数据的传递通常是借助 API&#xff08;应用程序编程接口&#xff09;来完成的。vue通过调用后端提供的 API 来获取或提交数据。例如&#xff0c;前端可能通过发送…

edeg插件/扩展推荐:助力生活工作

WeTab 此插件在我看来有2个作用 1.改变edeg的主页布局和样式,使其更加精简,无广告 2.提供付费webtab Ai(底层是chatGpt) 沉浸式翻译 此插件可翻译网页的内容 假设我们浏览github 翻译前 翻译后 Better Ruler 可以对网页的距离进行测量 适合写前端的小伙伴 用法示例:

k8s基础(4)—Kubernetes-Service

Service概述 抽象层 ‌k8s的Service是一种抽象层&#xff0c;用于为一组具有相同功能的Pod提供一个统一的入口地址&#xff0c;并通过负载均衡将网络流量分发到这些Pod上。‌ Service解决了Pod动态变化的问题&#xff0c;例如Pod的IP地址和端口可能会发生变化&#xff0c;通过…

客户案例:基于慧集通(DataLinkX)集成平台的金蝶云星空公有云与WMS系统对接集成方案

本文档详细介绍了基于慧集通&#xff08;DataLinkX&#xff09;集成平台的金蝶云星空公有云与WMS系统对接集成方案。该方案旨在实现金蝶云星空与WMS系统之间的数据同步和流程对接&#xff0c;以提高企业供应链管理的效率和准确性。通过物料、供应商资料同步&#xff0c;采购、销…

jenkins入门4 --window执行execute shell

1、启动关闭jenkins 在Windows环境下&#xff0c;如果你需要关闭Jenkins服务&#xff0c;可以通过以下几种方式&#xff1a; 1、使用Windows服务管理器&#xff1a; 打开“运行”对话框&#xff08;Win R&#xff09;&#xff0c;输入services.msc&#xff0c;然后回车。 在服…

ZYNQ初识7(zynq_7010)RAM_IP核

学习汇总正点原子bi站教学视频。但由于目前的学习板PL端缺乏时钟晶振&#xff0c;所以需要从PS端调用时钟供给PL端使用&#xff0c;也就造成顶层文件的设置出现一些问题&#xff0c;在IP核创建调用和例化过程中一些功能会受到限制&#xff0c;所以以下仅作汇总参考。 zynq_7000…

LeetCode:98.验证二叉搜索树

跟着carl学算法&#xff0c;本系列博客仅做个人记录&#xff0c;建议大家都去看carl本人的博客&#xff0c;写的真的很好的&#xff01; 代码随想录 LeetCode&#xff1a;98.验证二叉搜索树 给你一个二叉树的根节点 root &#xff0c;判断其是否是一个有效的二叉搜索树。 有效 …

Golang:使用minio替代文件系统实战教程

本文讨论项目开发中直接文件系统的限制或不足&#xff0c;接着介绍Minio对象存储的优势。同时给出Golang的实际示例代码&#xff0c;包括初始化客户端、读取minio对象以及设置过期策略等。 文件系统 vs Minio 在开发的早期阶段&#xff0c;常见的做法是使用文件系统来存储和检…

拥抱时代--AI(3)

python语言为了研究机器学习专门发展起来一套框架&#xff0c;并且这个框架是开源的&#xff0c;它就是scikit-learn。它主要实现数据预处理&#xff0c;分类&#xff0c;回归&#xff0c;降维&#xff0c;模型选择等最常用的机器学习算法。 在使用scikit-learn之前&#xff0…

实现多账户cursor限制的免费使用

目录 前言 个人建议&#xff1a; 准备工作 下载&#xff1a; 打开cursor&#xff1a; 打开下载文件目录&#xff1a…

OpenCV计算机视觉 05 图像边缘检测(Sobel算子、Scharr算子、Laplacian算子、Canny边缘检测)

图像边缘检测 边缘检测是图形图像处理、计算机视觉和机器视觉中的一个基本工具&#xff0c;通常用于特征提取和特征检测&#xff0c;旨在检测一张数字图像中有明显变化的边缘或者不连续的区域。 yuancv2.imread(yuan.png) cv2.imshow(yuan,yuan) cv2.waitKey(0) yuan_xcv2.Sob…