elasticsearch中文分词使用以及疑问

news2024/12/28 19:33:46

最近用到elasticsearch作为知识库底层搜索引擎,开发反馈中文查询有问题,所以引用ik分词解决此问题。

一、安装

根据自己的版本找到github仓库下载,我此处使用为7.9.3版本

v7.9.3 · Releases · medcl/elasticsearch-analysis-ik · GitHub

解压到ES的elasticsearch-7.9.3/plugins/ik/目录里,重启es即可。

二、使用

1.新建索引

curl -H 'Content-type: application/json' -XPUT 'http://192.168.113.138:9200/kms_index'

2.设置mapping,指定某些字段的分词器

curl -H 'Content-type: application/json' -XPOST 'http://192.168.113.138:9200/kms_index/_mapping' -d '{
 "properties": {
  "mainContent": {
   "type": "text",
   "analyzer": "ik_smart"
  },
  "title": {
   "type": "text",
   "analyzer": "ik_max_word"
  }
 }
}'

3.导入数据后查看mapping

4.开发查询,大部分中文词组已经可以查询到了。

三、思考 

1.为什么title设置了ik_smart分词,仍然不能单个字查询?

2.为什么类似于日志平台可以查询任意字符串,可以中文+英文的格式?

解决:查看api后发现可以使用query_string的查询方式,可以支持查询大部分数据,但是仍然不能查询单个字。

curl -H 'Content-type: application/json' -XGET 'http://192.168.113.138:9200/kms_index/_search' -d '
{
  "query": {
    "query_string": {
      "default_field": "title",
      "query": "使用sslvpn"
    }
  }
}
'

经过查找文档,整理出query和query_string的区别如下:

在 Elasticsearch 中,query和query_string都是查询语句,但它们的用法和功能不同。

`query` 是 Elasticsearch 的核心查询语言,它是基于 JSON 格式的查询 DSL(Domain-specific language)。使用 `query`,用户可以构建复杂的查询,利用各种查询子句和过滤器来精确地控制搜索结果的匹配度和排序。

`query_string` 查询是一种在查询语句中将查询表达式定义为简单的字符串的方法,它允许用户使用类似于 SQL 的表达式语言来指定单个查询条件。该查询可以包含一个或多个查询条件,以及 AND、OR 和 NOT 运算符,以及括号等逻辑控制符号。

相比而言,`query_string` 较为灵活和容易使用,但由于其具有的通配符和模糊搜索的特性,可能导致较高的查询延迟和资源消耗。而 `query` 的优势在于它具有更高的性能和更精确的搜索控制能力,但需要使用者了解一些复杂的查询 DSL 语法。因此,在实际使用中,需要根据具体的查询需求和性能要求选择合适的查询语句。

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

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

相关文章

git pull 和push讲解:016

pull 和push大致流程:(将远程仓库同步到本地仓库)>(在本地仓库修改并提交)>(推送修改内容到远程仓库) 1. 首先创建一个文件夹, 打开Git Bash终端, cd到这个文件夹内 2. 将(远程仓库)的克隆到这个文件夹内:git clone 远程仓库…

史上最难HelloWorld

文章目录 TomcatServlet创建一个项目引入依赖创建目录编写代码打包部署验证 优化一下打包和部署-Smart TomcatServlet常见的问题 Tomcat Tomcat就是一个HTTP服务器,HTTP协议是前后端交互的桥梁,前端就是浏览器,后端就是一个HTTP服务器&#…

设计模式之~访问者模式

简述: 访问者模式表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 访问者模式(Vistor Pattern)是一种将数据结构与数据操作分离的的设计模式。 结构图: 实例: 示例代码&#x…

Linux系统下C语言的编程技巧

Linux系统能够为人们提供更加安全实用的效果,保证计算机系统能够稳定的运行。利用Linux系统下首先要进行C语言的编程,掌握编程的技巧能够更好的发挥计算机的作用。如何掌握Linux系统下计算机C语言的编程技巧是计算机发展的关键要素。本文对Linux系统下计算机C语言的编程技巧进行…

【复习笔记】FreeRTOS(三)任务挂起和恢复

本文是FreeRTOS复习笔记的第三节,任务挂起和恢复,使用的开发板是stm32f407VET6,创建两个任务,task1负责闪烁LED,task2负责按键控制,当按键按下时控制任务挂起,按键再次按下恢复任务,…

【数据结构】经典排序法

欢迎来到Cefler的博客😁 🕌博客主页:那个传说中的man的主页 🏠个人专栏:题目解析 🌎推荐文章:题目大解析2 目录 👉🏻 直接插入排序👉🏻 选择排序&…

微信支付(小程序)-java

微信支付开发者文档微信支付是腾讯公司的支付业务品牌,微信支付提供公众号支付、APP支付、扫码支付、刷卡支付等支付方式。微信支付结合微信公众账号,全面打通O2O生活消费领域,提供专业的互联网行业解决方案,微信支付支持微信红包…

访问github网络问题解决

查看wsl可用镜像列表时产生如下访问github的网络问题 C:\Users\jiangcheng> wsl --list --online 无法从“https://raw.githubusercontent.com/microsoft/WSL/master/distributions/DistributionInfo.json”中提取列表分发。无法与服务器建立连接 Error code: Wsl/WININET_…

hive任务reduce步骤卡在99%原因及解决

我们在写sql的时候经常发现读取数据不多,但是代码运行时间异常长的情况,这通常是发生了数据倾斜现象。数据倾斜现象本质上是因为数据中的key分布不均匀,大量的数据集中到了一台或者几台机器上计算,这些数据的计算速度远远低于平均…

Vulkan Tutorial 9 模型加载Mipmaps

目录 28 加载模型 Sample mesh 加载顶点和索引 ​编辑 顶点去重 28 加载模型 我们将使用tinyobjloader库来从OBJ文件中加载顶点和面。它的速度很快,而且很容易集成,因为它是一个像stb_image一样的单文件库。将包含tiny_obj_loader.h的目录添加到Add…

ChatGPT国内镜像站

免费国内镜像推荐(超稳定) 下面为大家收集了目前国内最稳定流畅的ChatGPT镜像网站 目录 机器人 博弈ai 泰cool辣 道合顺 二狗问答 核桃 WOChat GPT中文站 TomChat 利用ChatGPTMindShow三分钟生成PPT ChatGPT国内镜像是啥 ChatGPT 镜像是指…

Xpdf 阅读器源码编译后查看文件中文乱码问题解决

经查阅,是由于缺少中文字体包: 第一步:下载所需要的字体包 下载https://dl.xpdfreader.com/xpdf-t1fonts.tar.gz 包含下载中文字体包(非嵌入字体) http://ftp.gnu.org/gnu/non-gnu/chinese-fonts-truetype/gkai00mp…

pytorch-简单回归问题-手写数字识别

pytorch-简单回归问题-手写数字识别 线性回归添加噪声简单例子分类问题引入-手写数字识别数据集 训练推导手写数字识别1加载数据集编写网络训练网络计算正确率 线性回归添加噪声 使用均方差损失函数来衡量损失 简单例子 通过最小化损失函数,求解出参数w b 下图表示…

封装的函数停发/启动CAN报文,以及报文接收检测,高可用

🍅 我是蚂蚁小兵,专注于车载诊断领域,尤其擅长于对CANoe工具的使用🍅 寻找组织 ,答疑解惑,摸鱼聊天,博客源码,点击加入👉【相亲相爱一家人】🍅 玩转CANoe,博客目录大全,点击跳转👉 📘前言 🍅 在测试过程中,我们可能需要可控的停/发某些报文,今天博主给…

chatgpt赋能python:Python主页面的SEO分析及优化建议

Python主页面的SEO分析及优化建议 Python是一种高级编程语言,广泛应用于人工智能、数据分析、Web开发等领域。Python官方网站是Python社区的一个重要门户,为全球学习Python的开发者提供了全面、权威、可靠的信息。在这篇文章中,我们将分析Py…

Text to image论文精读SeedSelect: 使用SeedSelect微调扩散模型It’s all about where you start

随着文本到图像扩散模型的发展,很多模型已经可以合成各种新的概念和场景。然而,它们仍然难以生成结构化、不常见的概念、组合图像。今年4月巴伊兰大学和OriginAI发表《It’s all about where you start: Text-to-image generation with seed selection》…

软件外包开发项目原型图工具

项目原型图工具有非常重要的作用,尤其是在APP项目开发中,对于整体需求的表达是必不可少的工具。相比于传统的文档需求,图形文字的表达可以更清楚的表达需求,让客户清楚的明白软件功能有哪些,最后的界面是怎样的&#x…

微信海量数据查询如何从1000ms降到100ms?

👉腾小云导读 微信的多维指标监控平台,具备自定义维度、指标的监控能力,主要服务于用户自定义监控。作为框架级监控的补充,它承载着聚合前 45亿/min、4万亿/天的数据量。当前,针对数据层的查询请求也达到了峰值 40万/m…

RL - 强化学习 上置信界算法 (UCB) 和 汤普森采样算法 (TS)

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/130983835 上置信界算法和汤普森采样算法是两种解决多臂老虎机问题的经典方法。多臂老虎机问题是一种探索与利用的平衡问题,…

Java easypoi 导出excel 并合并相关列

在项目开发中经常会使用到合并列&#xff0c;格式如下&#xff1a; 1.引入easypoi <dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-annotation</artifactId></dependency><dependency><groupId>cn.aftertur…