分布式搜索引擎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
重启测试:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

dd命令参数

GPT-4 (OpenAI) dd 是一个用于在 Unix 和 Unix 类操作系统中转换和复制文件的命令行工具。虽然它的名字听起来可能很简单&#xff0c;但是 dd 拥有很多功能强大的选项。下面列出了一些常见的 dd 参数&#xff08;选项&#xff09;&#xff1a; 1. if<文件名>&#xff…

mysql存储引擎和备份

索引 事务 存储引擎 概念&#xff1a;存储引擎&#xff0c;就是一种数据库存储数据的机制&#xff0c;索引的技巧&#xff0c;锁定水平。 存储引擎。存储的方式和存储的格式。 存储引擎也属于mysql当中的组件&#xff0c;实际上操作的&#xff0c;执行的就是数据的读写I/O。…

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

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

趣谈linux操作系统 9 网络系统-读书笔记

文章目录 网络协议栈基础知识回顾网络分层网络分层的目的各层作用简介延伸-ip地址,有类,无类,cidr socket实现分析tcp/udp回顾socket编程回顾TCP编程回顾UDP编程回顾差异 socket相关接口实现浅析sokcet实现解析创建socket的三个参数socket函数定义及其参数创建socket结构体关联…

StarRocks on AWS Graviton3,实现 50% 以上性价比提升

在数据时代&#xff0c;企业拥有前所未有的大量数据资产&#xff0c;但如何从海量数据中发掘价值成为挑战。数据分析凭借强大的分析能力&#xff0c;可从不同维度挖掘数据中蕴含的见解和规律&#xff0c;为企业战略决策提供依据。数据分析在营销、风险管控、产品优化等领域发挥…

8、添加第三方包

目录 1、安装Django Debug Toolbar Django的一个优势就是有丰富的第三方包生态系统。这些由社区开发的包&#xff0c;可以用来快速扩展应用程序的功能集 1、安装Django Debug Toolbar Django Debug Toolbar位于名列前三的第三方包之一 这是一个用于调试Debug Web应用程序的有…

Linux网络:应用层协议HTTP(一)

一、什么是HTTP协议 虽然我们说, 应用层协议是我们程序猿自己定的. 但实际上, 已经有大佬们定义了一些现成的, 又非常好用的应用层协议, 供我们直接参考使用. HTTP(超文本传输协议)就是其中之一。 在互联网世界中&#xff0c;HTTP&#xff08;HyperText Transfer Protocol&…

多口适配器,给您的生活增添便利

随着科技的快速发展&#xff0c;我们的生活已离不开各种各样的电子设备&#xff0c;智能手机、平板电脑、智能手表、无线耳机……它们共同构建了我们丰富多彩的数字生活。然而&#xff0c;面对众多设备的充电需求&#xff0c;传统的单一充电口已难以满足现代人的使用习惯。在这…

完整创建一个vite前端项目

目录 1.先创建一个vite项目 2.下载第三方依赖 ① 安装路由vue-router ② 安装vuex全局数据管理 ③ 安装element-plus ④ 安装element-plus图标 ⑤ 安装axios发送请求 ⑥ 完整main.js代码模板 3.开发组件 4.登陆页面开发用例 5. 完整项目代码 废话少说&#xff0c;直接…

DDei在线设计器-HTML渲染

Html渲染 HtmlViewer插件通过将一个外部DIV附着在图形控件上&#xff0c;从而改变原有图形的显示方式。允许使用者自己定义HTML通过HTML元素。本示例演示了通过Html来扩展渲染图形&#xff0c;从而获得更加丰富的图形展现。 通常情况下&#xff0c;我们创建的图形控件&#xff…

IDEA的工程与模块管理

《IDEA破解、配置、使用技巧与实战教程》系列文章目录 第一章 IDEA破解与HelloWorld的实战编写 第二章 IDEA的详细设置 第三章 IDEA的工程与模块管理 第四章 IDEA的常见代码模板的使用 第五章 IDEA中常用的快捷键 第六章 IDEA的断点调试&#xff08;Debug&#xff09; 第七章 …

STM32项目分享:智能宠物喂食系统

目录 一、前言 二、项目简介 1.功能详解 2.主要器件 三、原理图设计 四、PCB硬件设计 1.PCB图 五、程序设计 六、实验效果 七、资料内容 项目分享 一、前言 项目成品图片&#xff1a; 哔哩哔哩视频链接&#xff1a; https://www.bilibili.com/video/BV1zy411z7…

【STL专题】模拟实现std::string,深入解析内部实现机制:从大小到运算符重载的探索之旅【万字详解】

欢迎来到 CILMY23的博客 &#x1f3c6;本篇主题为&#xff1a;模拟实现std::string&#xff0c;深入解析内部实现机制&#xff1a;从大小到运算符重载的探索之旅【万字详解】 &#x1f3c6;个人主页&#xff1a;CILMY23-CSDN博客 &#x1f3c6;系列专栏&#xff1a;Python |…

使用 PVE 自签 CA 证书签发新证书

前言 PVE 安装时会自动创建一个有效期 10 年的 CA 证书, 我们可以利用这个 CA 证书给虚拟机中的 Web 应用签发新的 TLS 证书用于提供 HTTPS 服务. 下面以 PVE 虚拟机中通过 Docker 跑的一个 雷池 应用为例进行演示. PVE 证书位置 官方文档: https://pve.proxmox.com/wiki/Pr…

python-多任务编程

2. 多任务编程 2.1 多任务概述 多任务 即操作系统中可以同时运行多个任务。比如我们可以同时挂着qq&#xff0c;听音乐&#xff0c;同时上网浏览网页。这是我们看得到的任务&#xff0c;在系统中还有很多系统任务在执行,现在的操作系统基本都是多任务操作系统&#xff0c;具备…

国产麒麟、UOS在线打开pdf加盖印章

PageOffice支持两种电子印章方案&#xff0c;可实现对Word、Excel、PDF文档加盖PageOffice自带印章或ZoomSeal电子印章&#xff08;全方位保护、防篡改、防伪造&#xff09;。Word和Excel的盖章功能请参考&#xff1a;Word和Excel加盖印章和签字功能 &#xff08;目前只支持win…

【Django+Vue3 线上教育平台项目实战】Celery赋能:优化订单超时处理与自动化定时任务调度

文章目录 前言⭐✨&#x1f4ab;&#x1f525;&#x1f4d6;一、Celery⭐1.基本概念及介绍:✨2.使用步骤&#x1f4ab; 二、订单超时 取消订单&#xff08;Celery&#xff09;&#x1f525;具体实现流程&#x1f4d6; 前言⭐✨&#x1f4ab;&#x1f525;&#x1f4d6; 在构建复…

Mac Electron 应用如何进行签名(signature)和公证(notarization)?

最近很多客户反映&#xff0c;从官网下载的Mac Electron应用打不开&#xff0c;直接报病毒&#xff0c;类似于这种&#xff1a; 这是因为在MacOS 10.14.5之后&#xff0c;如果应用没有在苹果官方平台进行公证notarization(我们可以理解为安装包需要审核&#xff0c;来判断是否存…

Typora 1.5.8 版本安装下载教程 (轻量级 Markdown 编辑器),图文步骤详解,免费领取(软件可激活使用)

文章目录 软件介绍软件下载安装步骤激活步骤 软件介绍 Typora是一款基于Markdown语法的轻量级文本编辑器&#xff0c;它的主要目标是为用户提供一个简洁、高效的写作环境。以下是Typora的一些主要特点和功能&#xff1a; 实时预览&#xff1a;Typora支持实时预览功能&#xff0…

【每日一练】python编写一个简易计算器

程序代码: #循环语句&#xff0c;条件为真所以循环执行 while True: #定义两个数的变量和运算符号 num1 float(input("第一个数:")) num2 float(input("第一个数:")) syminput("选择运算符 - * /&#xff1a;") #判断运算符号 …