分布式搜索引擎ES-Elasticsearch进阶

1.head与postman基于索引的操作

引入概念:
集群健康:
green
所有的主分片和副本分片都正常运行。你的集群是100%可用
yellow
所有的主分片都正常运行,但不是所有的副本分片都正常运行。
red
有主分片没能正常运行。

查询es集群健康状态:
192.168.56.102:9200/_cluster/health
删除index:
在这里插入图片描述
创建index:
在这里插入图片描述
单个查询 get /index_temp:
在这里插入图片描述
查看所有索引:get /_cat/indices?v
在这里插入图片描述

2.mappings自定义创建映射

设置相应的数据结构:(mapping,就是定义数据的类型)
Index:false:表示不被识别,如果存放私密信息的时候设置为FALSE
在这里插入图片描述
text与keyword异同:
同:都是String
异:text大的文本,需要分词;keyword:精确匹配的搜索,微信号,手机号,QQ号等无需分词

创建索引的同时创建mapping

PUT     /index_str
{"mappings": {"properties": {"realname": {"type": "text","index": true},"username": {"type": "keyword","index": false}}}
}

为已经存在的索引创建mappings或者创建mappings

POST        /index_str/_mapping
{"properties": {"id": {"type": "long"},"age": {"type": "integer"},"nickname": {"type": "keyword"},"money1": {"type": "float"},"money2": {"type": "double"},"sex": {"type": "byte"},"score": {"type": "short"},"is_teenager": {"type": "boolean"},"birthday": {"type": "date"},"relationship": {"type": "object"}}
}

注:某个属性一旦被建立,就不能修改了,但是可以新增额外属性
主要数据类型
text, keyword, string
long, integer, short, byte
double, float
boolean
date
object
数组不能混,类型一致

字符串:text:文字类需要被分词倒排序索引的内容,比如:商品名称,商品详情,商品介绍
Keyword:不会被分词,不会被倒排序索引,直接匹配搜索,比如:订单状态,qq号等

3.mappings新增数据类型与analyze

查看分词效果:
GET /index_mapping/_analyze
{
“field”: “realname”,
“text”: “food is good”
}
尝试修改
POST /index_str/_mapping
{
“properties”: {
“name”: {
“type”: “long”
}
}
}

4.文档的基本操作-添加文档与自动映射

添加文档数据:
POST /my_doc/_doc/1 -> {索引名}/_doc/{索引ID}(是指索引在es中的id,而不是这条记录的id,比如记录的id从数据库来是1001,并不是这个。如果不写,则自动生成一个字符串。建议和数据id保持一致> )

{"id": 1001,"name": "nly-1","desc": "xhw is very good, 新华网非常牛!","create_date": "2019-12-24"
}{"id": 1002,"name": "nly-2","desc": "xhw is fashion, 新华网非常时尚!","create_date": "2019-12-25"
}{"id": 1003,"name": "nly-3","desc": "xhw is niubility, 新华网很好很强大!","create_date": "2019-12-26"
}{"id": 1004,"name": "nly-4","desc": "xhw is good~!","create_date": "2019-12-27"
}{"id": 1005,"name": "nly-5","desc": "新华网 is 强大!","create_date": "2019-12-28"
}{"id": 1006,"name": "nly-6","desc": "新华网是一个强大网站!","create_date": "2019-12-29"
}{"id": 1007,"name": "nly-7","desc": "新华网是很牛网站!","create_date": "2019-12-30"
}{"id": 1008,"name": "nly-8","desc": "新华网是很好看!","create_date": "2019-12-31"
}{"id": 1009,"name": "nly-9","desc": "在新华网学习很久!","create_date": "2020-01-01"
}

使用_doc创建时无法创建mapping。
如何增加数据:
_doc:表示如何创建文档;1表示文档名称
创建数据:对应数据库中创建一条完成的数据
在这里插入图片描述
区别_id与id,id一般是数据来源,可能是数据库中的id,_id就是文档的id,索引库的主键
在这里插入图片描述

如果索引没有手动建立mappings,那么当插入文档数据的时候,会根据文档类型自动设置属性类型。这个就是es的动态映射,帮我们在index索引库中去建立数据结构的相关配置信息。
“fields”: {“type”: “keyword”}
对一个字段设置多种索引模式,使用text类型做全文检索,也可使用keyword类型做聚合和排序
“ignore_above” : 256
设置字段索引和存储的长度最大值,超过则被忽略

5.文档的基本操作-删除与修改

文档的删除不是立即删除,文档还是保存在磁盘上,索引增长越来越多,才会把那些曾经标识过删除的,进行清理,从磁盘上移出去。
删除:删除文档中的一条数据
DELETE /my_doc/_doc/1
修改:修改某一条数据中的一部分(不添加update也可以实现)
POST /my_doc/_doc/1/_update
{
“doc”: {
“name”: “慕课”
}
}
全量替换:替换一条完整的文档(数据)
PUT /my_doc/_doc/1
{
“id”: 1001,
“name”: “imooc-1”,
“desc”: “imooc is very good, 慕课网非常牛!”,
“create_date”: “2019-12-24”
}
注意:每次修改后,version会更改

6.文档的基本操作-查询

常规查询:
查询某条特定的数据:(1表示对应的_id是1)
GET /index_demo/_doc/1
查询索引中的全部数据
GET /index_demo/_doc/_search

元数据
_index:文档数据所属那个索引,理解为数据库的某张表即可。
_type:文档数据属于哪个类型,新版本使用_doc。
_id:文档数据的唯一标识,类似数据库中某张表的主键。可以自动生成或者手动指定。
_score:查询相关度,是否契合用户匹配,分数越高用户的搜索体验越高。
_version:版本号。
_source:文档数据,json格式。

定制结果集:查询想要的参数
GET /index_demo/_doc/1?_source=id,name
GET /index_demo/_doc/_search ?_source=id,name
判断文档是否存在:
HEAD /index_demo/_doc/1
使用此种方式的好处是:规范;方便,快捷(只需要code码就可)

7.文档乐观锁控制if_seq_no与if_primary_term

乐观锁(version字段实现,删除或者被修改后它的version是累加的):
当一个共用数据,同时被几个用户或者线程并发的进行操作,
它会和它的版本号进行对比。版本号匹配更新,否则不更新
老版更新方式:
post:192.168.56.102:9200/my_doc/_doc/2001?version=2
{
“doc”: {
“name”: “慕课111”
}
}
查询对应的数值:
在这里插入图片描述
使用if_seq_no与if_primary_term进行更新的时候,同时会将下次的
if_seq_no(累加)与if_primary_term(不变)数值返回出来
在这里插入图片描述
当下版本的乐观锁控制需要使用if_seq_no与if_primary_term,使用在请求体中
字段中的“_seq_no”与“_primary_term”代表的是新的版本号

版本元数据
_seq_no:文档版本号,作用同_version(相当于学生编号,每个班级的班主任为学生分配编号,效率要比学校教务处分配来的更加高效,管理起来更方便)
_primary_term:文档所在位置(相当于班级)

8.分词与内置分词器

分词中文不识别。
全局分析:展现的是对于text文本内容的分词
POST /_analyze
{
“analyzer”: “standard”,
“text”: “text文本”
}
使用现有索引库:
POST /my_doc/_analyze
{
“analyzer”: “standard”,
“field”: “name”,
“text”: “text文本”
}
上面两种结果在简单的测试中,看起来没有多大区别;

es内置分词器
standard:默认分词,单词会被拆分,大小会转换为小写。

simple:按照非字母分词。大写转为小写。

whitespace:按照空格分词。忽略大小写。

stop:去除无意义单词,比如the/a/an/is…

keyword:不做分词。把整个文本作为一个单独的关键词。
非字母分词表示:不是字母会将其去除。
{
“analyzer”: “standard”,
“text”: “My name is Peter Parker,I am a Super Hero. I don’t like the Criminals.”
}

9建立IK中文分词器

安装IK分词器:(问题:遇到了-bash: unzip: 未找到命令的问题,重新定义安装就可)
Yum -y install unzip zip:安装unzip
unzip elasticsearch-analysis-ik-7.4.2.zip -d /usr/local/elasticsearch-7.4.2/plugins/ik
POST /_analyze
{
“analyzer”: “ik_max_word”,
“text”: “上下班车流量很大”
}
在这里插入图片描述
在这里插入图片描述

10.自定义中文词库

建立自定义词汇
在es/plugins/ik/config
vim custom.dic
添加内容:
新华网
骚年
配置自定义词典:
custom.dic
重启测试:

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

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

相关文章

UI设计中的响应式布局策略:让您的界面在各种设备上都表现出色

UI界面设计它是人与机器之间交互的媒介,也是客户体验的媒介(UX)一个组成部分。操作界面由两个主要部分组成:视觉设计(即传达产品的外观和感觉)和交互设计(即元素功能和逻辑组织)。用…

【ARM】MDK-解决CMSIS_DAP.DLL missing报错

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 记录解决CMSIS_DAP.DLL missing的报错情况,对应相关报错信息,供后续客户参考,快速解决客户问题。 2、 问题场景 客户进行硬件调试时,发现Target设置内有CMSIS_DAP.DL…

【ESP32S3cam 网页显示距离和经纬度教程】

1. ESP32S3 web 端功能需求: 本项目是一个基于ESP32-S3 Cam模块的多功能显示系统,旨在通过集成视频显示、超声波测距和GPS数据展示,以及LED控制功能,为用户提供一个直观、互动的智能监控和信息反馈平台。 视频显示部分,ESP32-S3 Cam模块将捕捉实时视频流,并通过内置的显…

反爬虫策略中的IP地址轮换如何实现?挑战与对策

当今互联网时代,各类网站、网络平台背后隐藏着大量数据,广告数据收集、市场数据收集都需要依托爬虫技术,但很多网站通过反爬虫技术限制或屏蔽爬虫的访问,这给数据收集带来不小的挑战。 为了规避这些反爬虫策略,开发人…

SAC-IA粗配准算法记录

1. 算法思路 SAC-IA(Sample Consensus Initial Aligment,SAC-IA)粗配准算法是一种基于局部特征描述子的点云粗配准算法,其需要计算点云的快速点特征直方图(FPFH)来保持对应点对之间的相似关系,根据相似关系来搜索点云中的对应点。其基本原理是采用采样一致性的思想,通过查…

Java后端开发(十四)-- Win10安装多版本JDK并随时切换

目录 1. 多版本JDK并随时切换的解决办法 2. jdk17切回jdk8时一直失败的解决办法 3. 测试jdk版本 我目前使用的是window10的操作系统,在环境变量中关于jdk的配置如下: 1. 多版本JDK并随时切换的解决办法 最后一步就是切换 JAVA_HOME 的环境变量的值,就能随意切换jdk的版本…

Ubuntu16.04环境下Baxter机器人开发环境搭建要点说明

Ubuntu16.04环境下Baxter机器人开发环境搭建要点说明 前面写过一篇文章,描述了在ubuntu20.04环境下baxter机器人开发环境的搭建,本人在后来的使用中,出于一些原因又在ubuntu16环境下搭建了开发环境,二者总体流程基本类似&#xf…

MongoDB - 字段更新操作符:$set、$unset、$inc、$currentDate、$rename

文章目录 1. 测试数据构造2. $set2.1 更新字段的值2.2 新增字段的值2.3 更新嵌入式文档字段的值2.4 更新数组字段的元素值 3. $unset4. $currentDate5. $inc5.1 更新字段的值5.2 新增字段的值5.3 递增多个字段值 6. $rename 更新操作符是用于更新MongoDB文档中字段值的特殊操作…

PyTorch 深度学习实践-处理多维特征的输入

视频指路 参考博客笔记 参考笔记二 通过多个线性模型来模拟非线性的空间变换,矩阵计算就是不同维度之间的空间转换 说明:1、乘的权重(w)都一样,加的偏置(b)也一样。b变成矩阵时使用广播机制。神经网络的参数w和b是网络需要学习的&#xff0c…

适用于 Android 的恢复应用程序合集分享

丢失重要文件或数据从来都不是一件有趣的事。这种情况可能发生在您的计算机和笔记本电脑上,也可能发生在您的 Android 智能手机或平板电脑上。然而,尽管 Android 用户可能认为在这种情况下他们可用的选择较少,但用于 Android 数据恢复的应用程…

Linux下vim编辑器的使用方法

Vim编辑器 vim kk 使用vim来创建或编辑 kk文件 一般模式下的操作 x 为向后删除一个字符 nx 连续向后删除n个字符 dd 删除光标所在行 ndd 删除光标所在的向下n行 yy 复制光标所在的那一行 nyy 复制光标所在的向下n列 p 将已复制的数据在光标下一行粘贴上 P 则为贴在光标的上一…

0718vscode问答

终于来到 qt # Question 多态 # Answer 多态是面向对象编程中的一个重要概念,指的是同一个接口可以有多种不同的实现方式。多态性允许我们使用一个统一的接口来处理不同类型的对象,从而提高代码的灵活性和可扩展性。 在Java中,多态可以通过以…

JCR一区级 | Matlab实现PSO-Transformer-LSTM多变量回归预测

JCR一区级 | Matlab实现PSO-Transformer-LSTM多变量回归预测 目录 JCR一区级 | Matlab实现PSO-Transformer-LSTM多变量回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现PSO-Transformer-LSTM多变量回归预测,粒子群优化Transformer结合LST…

CTF-Web习题:[HFCTF2021]Unsetme

题目链接&#xff1a;[HFCTF2021]Unsetme 解题思路 打开靶场发现是一段PHP源码 做一下代码审阅&#xff1a; <?php// Kickstart the framework $f3require(lib/base.php);//引入f3框架源码$f3->set(DEBUG,1);//f3对象设置DEBUG属性 if ((float)PCRE_VERSION<8.0)…

C++【OpenCV】图片亮度色度归一化

#include <opencv2/highgui.hpp> #include <opencv2/imgproc.hpp> #include <iostream>using namespace cv; using namespace std;int main() {Mat image imread("SrcMF.jpg");// 灰度、Gamma归一化亮度cv::Mat m_gray;cv::cvtColor(image, m_gra…

channle介绍

通道在Java NIO&#xff08;New Input/Output&#xff09;中扮演着核心角色&#xff0c;它们是与Buffer&#xff08;缓冲区&#xff09;交互的入口点&#xff0c;用于从外部资源读取数据到内存或从内存写入数据到外部资源。通道可以看作是访问文件数据和其他I/O资源&#xff08…

力扣第十七题——电话号码的字母组合

内容介绍 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。 示例 1&#xff1a; 输入&#xff1a;digits "23" 输出…

【JS逆向课件:第六课:文件操作】

文件操作 引言 到目前为止&#xff0c;我们做的一切操作&#xff0c;都是在内存里进行的&#xff0c;这样会有什么问题吗&#xff1f;如果一旦断电或发生意外关机了&#xff0c;那么你辛勤的工作成果将瞬间消失。是不是感觉事还挺大的呢&#xff1f;现在你是否感觉你的编程技…

【JS逆向课件:第四课:流程控制】

流程控制 条件判断 顺序结构的程序虽然能解决计算、输出等问题&#xff0c;但不能做判断再选择。对于要先做判断再选择的问题就要使用分支结构。 单分支语句 语法&#xff1a; if 表达式:代码块说明&#xff1a; 1、“表达式”可以是一个单一的值或者复杂语句&#xff0c;形…

[Maven] 打包编译本地Jar包报错的几种解决办法

目录 方式1&#xff1a;通过scope指定 方式2&#xff1a;通过新建lib 方式3&#xff1a;通过build节点打包依赖​​​​​​​ 方式4&#xff1a;安装Jar包到本地 方式5&#xff1a;发布到远程私有仓库 方式6&#xff1a;删除_remote.repositories 方式7&#xff1a;打包…