elasticsearch基本操作

news2024/11/16 7:41:11

elasticsearch基本操作

    • 基础
      • 两种模式:
      • ik分词器词库拓展
      • 索引库操作
        • mapping映射属性
          • type
          • index
          • analyzer
          • properties
        • 索引库的CRUD
          • 创建
          • 修改
          • 查询
          • 删除
      • 文档操作
        • 创建
        • 查询
        • 修改
        • 删除

基础

本教程使用es8.6.0与kibana作为测试环境

打开开发工具

image-20230119151803527

## 1.查看节点信息
GET /_cat/nodes?v
## 2.查看节点健康状态
GET _cluster/health
## 3.创建索引库
PUT /moon_db
## 4.查寻索引库
GET /moon_db
## 5.删除索引库
DELETE /moon_db
## 6.判断索引库是否存在
HEAD /moon_db

1.创建索引库时设置分词器、分片数和副本数
PUT /moon_db
{
  "settings":{
    "number_of_shards": 2,
    "number_of_replicas": 2,
    "index":{
      "analysis.analyzer.default.type":"ik_max_word"
    }
  }
}
## 2.创建文档
##  如果id不存在,创建新的文档,否则先删除现有文档,再创建新的文档,版本会增加
##  如果是_create命令,id存在则会报错
##  如果用POST命令,带着ID则使用指定ID,否在由ES生成一个ID
PUT /moon_db/_doc/1
{
  "name":"张三",
  "sex":1,
  "age":18,
  "poem":"连雨不知春去,一晴方觉夏深"
}

POST /moon_db/_doc/
{
  "name":"孙八",
  "sex":1,
  "age":30,
  "poem":"清江一曲抱村流,长夏江村事事幽"
}
## 3.查寻数据
GET /moon_db/_doc/1
## 4.更新:PUT|POST ID一致相当于全量更新
##   部分更新:_update
POST /moon_db/_update/1
{
  "doc": {
    "name":"张三峰"
  }
}
## 5.条件更新: _update_by_query
##   如果原文档,无ages属性,则会创建ages,并赋值
POST /moon_db/_update_by_query
{
  "query": {
    "match": {
      "_id": "1"
    }
  },
  "script": {
    "source": "ctx._source.ages = 30"
  }
}
## 6.并发时读后写版本控制:
##   _seq_no:数据序列号,同_version,数据变更时严格递增
##   _primary_term:分区版本,主分区重新分配(重启、Primary选举等),版本递增
PUT /moon_db/_doc/1?if_seq_no=11&if_primary_term=1
{
  "name":"张三峰",
  "age":18,
  "poem":"连雨不知春去,一晴方觉夏深"
}
## 7.条件查询
GET /moon_db/_search?from=0&size=10
{
  "query": {
    "term": {
      "age": 30
    }
  }
}

两种模式:

ik_smart
按照内存/计算力消耗最少来分析

image-20230119152925555

ik_max_word
按照搜索效果最大来划分

image-20230119153110260

ik分词器词库拓展

字典:这里指的是ik分词器的合法词语组成的集合

修改ik分词器的config目录的IKAnalyzer.cfg.xml文件

设置ext.dic是扩展词库,

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

然后新建一个文件为ext.dic,在里面添加词,作为扩展词库

然后目录里有stopword.dic,在里面添加词,作为停用词库:(放不会分词的单词,比如脏话,语气词等词语)

image-20230119161052892

添加个人词典:

image-20230119170632699

添加停用词:

image-20230119164715937

这里还有其他词库:量词后缀啥的,用的时候再看

image-20230119164037292

记得保存了重启生效

docker restart es
docker restart kibana

测试:

image-20230119171011107

可见停用词"希特勒",“的"都不见了,但是出现了完整的"奥力给”.

"yyds"没有分出来,可能在原本的英语分词中还是以空格分词为主,所以不会进行切分

索引库操作

mapping映射属性

mapping是对索引库中文档的约束

常见的属性:

type

字段数据类型,常见的类型:

​ 字符串: text(可分词的文本),keyword(精确值,比如:品牌、国家、邮箱)

​ 数值: long,integer,short,byte,double,float

​ 布尔: boolean

​ 日期: date

​ 对象: object

es中没有数组类型,但是会理解成多个值分别解析,

index

是否创建索引,默认为true(是否参与搜索)

analyzer

使用哪种分词器,一般我们用ik_smart,和text结合使用

properties

该字段(属性)的子字段(属性)

索引库的CRUD

创建
PUT /syk1
{
  "mappings": {
    "properties": {
      "info":{
        "type": "text",
        "analyzer": "ik_smart"
      },
      "email":{
        "type": "keyword",
        "index": false
      },
      "name":{
        "type": "object",
        "properties": {
          "firstName": {
            "type":"keyword"
          },
          "lastName":{
            "type": "keyword"
          }
        }
      }
    }
  }
}

image-20230119175835900

修改

事实上不允许进行修改,但是可以添加新字段

PUT /syk1/_mapping
{
  "properties": {
    "age":{
      "type": "integer"
    }
  }
}

添加成功:

image-20230119215041599

查询
GET /syk1

image-20230119214944228

删除
DELETE /syk1

删除成功

image-20230119215153380

文档操作

都是在索引库名后面加上_doc/文档id

文档:

创建

POST /索引库名/_doc/文档id

#插入文档
POST /syk1/_doc/1
{
  "info": "太少了希特勒顺利打开斯克空难 yyds ",
  "email":"11222211@qq.com",
  "name":{
    "firstName": "可",
    "lastName": "李"
  }
}

image-20230119225335862

查询

GET /syk1/_doc/1

image-20230119231315712

修改

全量修改

#修改文档
#全量修改(删除再添加(按道理来说可以替代post新增操作))
PUT /syk1/_doc/1
{
  "info":"立刻就会十五年借款期限",
  "email":"22222222222222@qq.com",
  "name":{
    "firstName":"李",
    "lastName":"对"
  }
}

image-20230119232018299

增量修改

#增量修改
POST /syk1/_update/1
{
  "doc":{
    
    "name":{
      "firstName":"刘"
    }
  }
}

image-20230119232229916

删除

使用的乐观锁思想,删除不是真删除,所以删除之后再添加会有版本迭代现象

#删除文档
DELETE /syk1/_doc/1

image-20230119234022242

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

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

相关文章

【JUC并发编程】深入浅出Java并发基石——AQS

【JUC并发编程】深入浅出Java并发基石——AQS 参考资料&#xff1a; RedSpider社区——第十一章 AQS 深入剖析并发之AQS独占锁 1.5w字&#xff0c;30图带你彻底掌握 AQS&#xff01; 深入浅出AbstractQueuedSynchronizer 我画了35张图就是为了让你深入 AQS 动画演示AQS的核心原…

遍历 “可变参数模板” 的模板参数

类模板和函数模板&#xff0c;只能包含固定数量的模板参数&#xff0c;C11支持模板参数可变&#xff0c;那么在不知道模板参数有多少个的情况下&#xff0c;如何遍历模板参数&#xff1f; 目录 一、可变参数模板的声明 二、可变参数模板的遍历 1、递归遍历 2、非递归遍历 …

idea使用DataBase连接数据库 Free MyBatis Tool自动生成 实体类工具使用

DataBase DataBase连接数据库 设置DataSources Host 》IP地址Port 》端口号User 》用户名Password 》密码Database 》连接的数据库 设置驱动 Drives tables 文件夹中即所连接数据库中表 Free MyBatis Tool自动生成 实体类&#xff0c;Mapper &#xff0c;以及mapper.xml 选…

CleanMyMac4.12.3最新版本Mac系统清理工具

CleanMyMac可以为Mac腾出空间&#xff0c;软件已经更新到CleanMyMac X 支持最新版Macos 10.14系统。CleanMyMac具有一系列巧妙的新功能&#xff0c;可让您安全&#xff0c;智能地扫描和清理整个系统&#xff0c;删除大量未使用的文件&#xff0c;减小iPhoto图库的大小&#xff…

非类型模板参数/模板的特化/模板的分离编译

上一篇文章中&#xff0c;我们对模板有了初步的认识&#xff0c;接下来我们便对模板进一步地学习&#xff01; 1.非类型模板参数 模板参数分为类型形参与非类型形参&#xff1a; ①类型形参即&#xff1a;出现在模板参数列表中&#xff0c;跟在class或者typename之类的参数类…

20 个杀手级的 JavaScript 单行代码,可以节省你的编码时间

使用这些基本的单行代码将您的 JavaScript 技能提升到一个新的水平&#xff0c;这也将节省您的编码时间 &#x1f680;1) 查找数组中的最大值&#xff1a;Math.max(...array)2&#xff09;从数组中删除重复项&#xff1a;[...newSet(array)]3&#xff09;生成一个1到100之间的随…

Java开发环境搭建实践

前言 刚刚弄完python的环境搭建&#xff0c;今年打算也要好好学习Java&#xff0c;所以把Java的环境弄起来 搭建过程 jdk下载和安装 下载 官网&#xff1a;Oracle 甲骨文中国 | 云应用和云平台 打开官网 点击产品后下拉找到Java点进去。 下载Java 我就下载最新的jdk把…

Spring Boot学习之任务学习【异步、定时、邮件】

文章目录一 异步任务1.1 创建spring Boot项目&#xff0c;选择Spring Web1.2 创建AsyncService类1.3 编写controller类1.4 在启动类上开启异步功能1.5 测试结果二 定时任务2.1 基础知识2.2 项目创建2.3 创建一个ScheduledService2.4 在主程序上增加EnableScheduling 开启定时任…

Hbuilder打包成苹果IOS-App的详解

本文相关主要记录一下使用Hbuilder打包成苹果IOS-App的详细步骤。介绍一下个人开发者账号&#xff1a;再说下什么是免费的苹果开发者账号&#xff0c;就是你没交688年费的就是免费账号&#xff0c;如果你想变成付费开发者账号&#xff0c;提交申请付费就行&#xff0c;账号都是…

【C++】priority_queue使用模拟实现

priority_queue使用 http://www.cplusplus.com/reference/queue/priority_queue/ 文档介绍 优先级队列是一种容器适配器,根据严格的弱排序标准,它的第一个元素总是它所包含的元素中最大的(大堆为例) 在堆中可以随时插入元素,并且只能检索最大堆元素(优先队列中位于顶部的元素)…

应用系统基于OAuth2实现单点登录的解决方案

1、OAuth2单点认证原理 基于OAuth2的认证方式包含四种&#xff0c;其中单点登录最常用的是授权码模式&#xff0c;其基本的认证过程如下&#xff1a; 用户访问业务应用&#xff0c;业务应用进行登录检查&#xff1b;业务应用重定向到OAuth2认证服务器&#xff0c;调用获取授权…

米哈伊年终奖是32万,我的年终奖是彩虹屁!

数据来源沉默王二 | 数据报表小熊绘制 年都过完了&#xff0c;年终奖结果也都出来了&#xff0c;我这个年没有过好&#xff0c;每次想到就难受&#xff0c;在看王二整理出来的年终奖&#xff0c;整个人都不好了。 本次统计基于49条数据的不准确统计&#xff0c;仅抽取部分公司部…

Lesson 4.4 随机梯度下降与小批量梯度下降

文章目录一、损失函数理论基础二、随机梯度下降&#xff08;Stochastic Gradient Descent&#xff09;1. 随机梯度下降计算流程2. 随机梯度下降的算法特性3. 随机梯度下降求解线性回归4. 随机梯度下降算法评价三、小批量梯度下降&#xff08;Mini-batch Gradient Descent&#…

SpringMVC执行流程和原理

1、用户发送出请求到前端控制器DispatcherServlet。 2、DispatcherServlet收到请求调用HandlerMapping&#xff08;处理器映射器&#xff09;。 3、HandlerMapping找到具体的处理器(可查找xml配置或注解配置)&#xff0c;生成处理器对象及处理器拦截器 (如果有)&#xff0c;再…

51单片机学习笔记-3模块化编程

3 模块化编程 [toc] 注&#xff1a;笔记主要参考B站江科大自化协教学视频“51单片机入门教程-2020版 程序全程纯手打 从零开始入门”。 3.1 模块化编程 传统方式编程&#xff1a;所有的函数均放在main.c里&#xff0c;若使用的模块比较多&#xff0c;则一个文件内会有很多的…

1604_linux环境下使用命令行把网页转换成pdf

全部学习汇总&#xff1a; GreyZhang/toolbox: 常用的工具使用查询&#xff0c;非教程&#xff0c;仅作为自我参考&#xff01; (github.com) 使用的工具很容易在彼此之间产生隔离性障碍&#xff0c;比如我最近使用的墨水屏阅读的最合适的文件格式我觉得是pdf&#xff0c;但是我…

路由工具之路由策略router-policy、acl列表与ip-prefix前缀列表的区别、过滤列表filter-policy

3.0.0 路由工具之路由策略router-policy、acl列表与ip-prefix前缀列表的区别、过滤列表filter-policy 目录IP-Prefix前缀列表前缀列表与ACLrouter-policy路由策略应用路由策略过滤路由1、环境介绍2、配置OSPF3、过滤路由&#xff08;1&#xff09;ACL匹配路由方式过滤&#xff…

带死区的PID控制算法及仿真

在计算机控制系统中&#xff0c;某些系统为了避免控制作用过于频繁&#xff0c;消除由于频繁动作所引起的振荡&#xff0c;可采用带死区的PID控制算法&#xff0c;控制算式为&#xff1a;式中&#xff0c;e(k)为位置跟踪偏差;e为一个可调参数&#xff0c;其具体数值可根据实际控…

软件测试职场六年,一个女测试工程师的自我认知

微软自动化测试二年&#xff0c;而后转入阿里做自动化测试三年&#xff0c;经历了入行时的迷茫&#xff0c;而后的笃定&#xff0c;转入移动后对自身定位和价值的怀疑&#xff0c;继而对自动化测试的重新认识&#xff0c;职场六年&#xff0c;终于敢对自动化测试有所论述了。 先…

五个好用的PDF软件推荐!

我们在工作中经常需要选择一款好用的办公软件来转换PDF文件&#xff0c;如果选择的软件不好用&#xff0c;那就回影响我们工作的效率&#xff0c;如果选对了软件&#xff0c;就可以让我们的效率越来越高&#xff0c;足以证明软件的在我们办公中的重要性&#xff0c;下面小编就来…