ES第四天-简单CRUD

分布式搜索引擎之elasticsearch基本使用1 什么是elasticsearch?一个开源的分布式搜索引擎,可以用来实现搜索、日志统计、分析、系统监控等功能什么是elastic stack(ELK)?是以elasticsearch为核心的技术栈,包括beats、Logstash、kibana、elasticsearch什么是Lucene?是Apache的开源搜索引擎类库,提供了搜索引擎的核心API分词器的作用是什么?创建倒排索引时对文档分词用户搜索时,对输入的内容分词IK分词器有几种模式?ik_smart:智能切分,粗粒度。 阅读详情

创建索引

PUT /索引名称?pretty

查询索引

GET _cat/indices?v

删除索引

DELETE /索引名称?pretty

插入数据

语法格式:

POST/index名称/type名称/id值
{
    Json数据
}

id值可以不进行指定,如果不指定,将生成一个随机字符串的id
ps:当然,在es7中,弱化了type的概念,因此统一都用“_doc”的type进行表示
例子:
创建product索引下,若干条记录

POST/product/_doc/1
{
    "name" : "xiaomi phone",
    "desc" :  "shouji zhong de zhandouji",
    "price" :  3999,
    "tags": [ "xingjiabi", "fashao", "buka" ]
}
POST/product/_doc/2
{
    "name" : "xiaomi nfc phone",
    "desc" :  "zhichi quangongneng nfc,shouji zhong de jianjiji",
    "price" :  4999,
    "tags": [ "xingjiabi", "fashao", "gongjiaoka" ]
}
 
 
POST/product/_doc/3
{
    "name" : "nfc phone",
    "desc" :  "shouji zhong de hongzhaji",
    "price" :  2999,
    "tags": [ "xingjiabi", "fashao", "menjinka" ]
}
 
POST/product/_doc/4
{
    "name" : "xiaomi erji",
    "desc" :  "erji zhong de huangmenji",
    "price" :  999,
    "tags": [ "low", "bufangshui", "yinzhicha" ]
}
 
POST/product/_doc/5
{
    "name" : "hongmi erji",
    "desc" :  "erji zhong de kendeji",
    "price" :  399,
    "tags": [ "lowbee", "xuhangduan", "zhiliangx" ]
}

还可以这样: create与上面插入的区别就是,如果数据已存在,不会更新,而是报错。

在这里插入图片描述

查询数据

语法

全量搜索

GET /索引名/type类型/_search

id匹配搜索

GET /索引名/type类型/id值

例子

查询product索引下的所有数据

GET /product/_doc/_search

{
  "took" : 2, //查询时间(毫秒数)
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 4,
      "relation" : "eq"
    },
    "max_score" : 1.0,
    "hits" : [
      {
        "_index" : "product",
        "_type" : "_doc",
        "_id" : "3",
        "_score" : 1.0,
        "_source" : {
          "name" : "nfc phone",
          "desc" : "shouji zhong de hongzhaji",
          "price" : 2999,
          "tags" : [
            "xingjiabi",
            "fashao",
            "menjinka"
          ]
        }
      },
      {
        "_index" : "product",
        "_type" : "_doc",
        "_id" : "4",
        "_score" : 1.0,
        "_source" : {
          "name" : "xiaomi erji",
          "desc" : "erji zhong de huangmenji",
          "price" : 999,
          "tags" : [
            "low",
            "bufangshui",
            "yinzhicha"
          ]
        }
      },
      {
        "_index" : "product",
        "_type" : "_doc",
        "_id" : "5",
        "_score" : 1.0,
        "_source" : {
          "name" : "hongmi erji",
          "desc" : "erji zhong de kendeji",
          "price" : 399,
          "tags" : [
            "lowbee",
            "xuhangduan",
            "zhiliangx"
          ]
        }
      },
      {
        "_index" : "product",
        "_type" : "_doc",
        "_id" : "1",
        "_score" : 1.0,
        "_source" : {
          "name" : "xiaomi phone",
          "desc" : "shouji zhong de zhandouji",
          "price" : 99999
        }
      }
    ]
  }
}

当然,_search这种搜索可以带参数:
根据价格正序查询:

GET /product/_doc/_search?sort=price:asc

匹配price为666的数据

GET /product/_doc/_search?q=price:666

更新数据

全量字段更新

语法格式

PUT /index名称/type名称/id值
{
    Json数据
}

类似于插入操作,如果检测到已经存在当前id的数据,那么会将新值把老值覆盖,但存在问题:如果不给字段,那么原有字段就意味着丢失了。

例子

接下来操作一下id为1的product数据,先查看一下:

GET /product/_doc/1
{
  "_index" : "product",
  "_type" : "_doc",
  "_id" : "1",
  "_version" : 1,
  "_seq_no" : 0,
  "_primary_term" : 1,
  "found" : true,
  "_source" : {
    "name" : "xiaomi phone",
    "desc" : "shouji zhong de zhandouji",
    "price" : 3999,
    "tags" : [
      "xingjiabi",
      "fashao",
      "buka"
    ]
  }
}

对id为1的product进行更新:

PUT /product/_doc/1
{
    "name" : "xiaomi phone",
    "desc" :  "shouji zhong de zhandouji",
    "price" :  12999
}

再次查看:

GET /product/_doc/1
{
  "_index" : "product",
  "_type" : "_doc",
  "_id" : "1",
  "_version" : 2,
  "_seq_no" : 5,
  "_primary_term" : 1,
  "found" : true,
  "_source" : {
    "name" : "xiaomi phone",
    "desc" : "shouji zhong de zhandouji",
    "price" : 12999
  }
}

发现,tags没了,这属于全量字段覆盖。

指定字段更新

语法格式

POST /索引名/type类型/id/_update
{
    "doc":{
        "字段名称":value
    }
}

例子

还是修改product id为1的数据,只改price:

POST /product/_doc/1/_update
{
    "doc":{
        "price":99999
    }
}

然后发现其他字段没少,price也成功改成了99999了。

乐观锁:
在这里插入图片描述

删除数据

DELETE /索引名/type类型/id

delete不会立马将数据物理删除,而是一种延时删除(软删除),当积攒到一定量时ES集体将这些无效数据进行清除。
这体现在:如果你立马将某一条id数据删除后,又立马进行插入一条相同id的数据,此时它的版本号是在之前删除的数据版本号上进行递增的。

返回格式美化

当你在浏览器进行访问ES的REST API的时候,返回的JSON可能是不太美观的。
可以在最后参数后面跟一个pretty,可以返回格式化的json信息。
例如:

GET /product/_doc/1?pretty
Easy-ES(用Mybatis-Plus语法来操作ElasticSearch) Easy-Es(简称EE)是一款基于ElasticSearch(简称Es)官方提供的RestHighLevelClient打造的ORM开发框架,在 RestHighLevelClient的基础上,只做增强不做改变,为简化开发、提高效率而生,如果有用过Mybatis-Plus(简称MP),那么基本可以零学习成本直接上手EE,EE是MP的Es平替版,在有些方面甚至比MP更简单,同时也融入了更多Es独有的功能,快速实现各种场景的开发.使用mybatis-plus语法来操作ES 阅读详情

相关推荐

【Elasticsearch】es 脚本编程使用详解

es 脚本编程使用详解

congge_study的博客 4027

Elasticsearch概述

文章目录Elasticsearch概述Elasticsearch是什么全文搜索引擎Elasticsearch And SolrElasticsearch Or SolrElasticsearch 应用案例 Elasticsearch概述 Elasticsearch是什么 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sR9BxacL-1621602956415)(C:\Users\栾昊\AppData\Roaming\Typora\typora-user-images\ima

weixin_45417821的博客 592

【SOC估算】基于EKF与神经网络融合的锂电池SOC高精度估计及Matlab实现

本文探讨了基于EKF与神经网络融合的锂电池SOC高精度估计方法。通过结合扩展卡尔曼滤波(EKF)的模型驱动优势和神经网络的数据驱动学习能力,实现了对电池荷电状态(SOC)的精准预测。Matlab仿真验证了该混合算法在各种工况下均能显著降低估计误差,提升电池管理系统性能。

play7的博客 695

elastic 概述

ES的介绍ES是一个使用Java语言并且基于Lucene编写的搜索引擎框架,他提供了分布式的全文搜索功能,提供了一个统一的基于RESTful风格的WEB接口,官方客户端也对多种语言都提供了相应的API。Lucene:Lucene本身就是一个搜索引擎的底层。分布式:ES主要是为了突出他的横向扩展能力。全文检索:将一段词语进行分词,并且将分出的单个词语统一的放到一个分词库中,在搜索时,根据关键字去分词库中检索,找到匹配的内容。(倒排索引)RESTful风格的WEB接口。

weixin_60934893的博客 2136

ADS新手必看:ICCAP数据导入与导出CSV的完整流程(附常见问题解决)

本文为ADS新手详细讲解了如何将ICCAP测试数据导入ADS进行仿真分析,并导出为通用CSV格式的完整流程。内容涵盖文件格式解析、导入设置、数据验证、处理技巧及常见问题排查,重点解决了数据文件导入过程中的兼容性与单位映射等核心难点,帮助射频工程师高效连接测量与仿真环节。

peace的博客 557

软件测试工程师笔试题

这里写目录标题全套软件测试面试笔试题(附答案)二、选折三、添空四、简答(资料是搜集整理的,感谢前辈的解题)无1.区别阶段评审的与同行评审2.什么是软件测试3. 简述集成测试的过程4 怎么做好文档测试5 白盒测试有几种方法6 系统测试计划是否需要同行审批,为什么7Alpha 测试与 beta 的区别8 比较负载测试,容量测试和强度测试的区别。性能测试从使用方便的角度来说,9 测试结束的标准是什么?10 描述软件测试活动的生命周期?11 软件的缺陷等级应如何划分? 软件测试工程师笔试题(附答案) 全套软件测试面

m0_46446002的博客 2549

Elasticsearch基础入门

Elasticsearch是一个开源的分布式、RESTful 风格的搜索和数据分析引擎,它的底层是开源库Apache Lucene。Lucene 可以说是当下最先进、高性能、全功能的搜索引擎库——无论是开源还是私有,但它也仅仅只是一个库。为了充分发挥其功能,你需要使用 Java 并将 Lucene 直接集成到应用程序中。更糟糕的是,您可能需要获得信息检索学位才能了解其工作原理,因为Lucene 非常复杂。为了解决Lucene使用时的繁复性,于是Elasticsearch便应运而生。

quanzhan_King的博客 1538

学Simulink--基于多能源系统协同与能源互联网的电网系统场景实例:风光氢储一体化系统的能量管理与调度仿真

在全球“双碳”目标驱动下,高比例可再生能源并网成为电网发展的核心方向。然而,风电与光伏具有强随机性与间歇性,给电网稳定运行带来巨大挑战。风光氢储一体化系统(Wind-Solar-Hydrogen-Storage Integrated System)通过将可再生能源发电电解水制氢氢气储存与燃料电池发电有机结合,构建了一个长时储能与能量形态转换的闭环系统,是实现能源互联网与零碳电力系统的关键路径。✅平抑波动:氢储能可实现跨天、跨周储能✅能量转化:电→氢→电/热/交通燃料,实现多能互补✅长时储能。

amy_mhd的博客 1071

Elasticsearch快速入门

Elasticsearch快速入门

ks_1998的博客 5370

强化学习(Q-learning、DQN) —— 理论、案例与交互式 GUI 实现

本文详细介绍了强化学习中基于值函数的 Q-learning 算法及深度强化学习的 DQN 方法,从基本理论、数学模型到算法流程均进行了全面阐述。通过迷宫导航、股票交易策略和机器人控制等典型案例,展示了强化学习在处理高维、非线性和时变问题中的强大适应性。为了帮助工程师和研究者更直观地理解强化学习的训练过程,本文还提供了一份基于 Python 与 PyQt6 实现的交互式 GUI 演示系统代码示例,用户可以在线调整参数,实时观察累计奖励和 Q 值的变化,从而更深入地理解算法收敛和策略演化的过程。

闲人编程的博客 1475

lammps案例:堆垛层错能的计算

大家好,我是小马老师。 本文介绍如何使用lammps计算晶体的堆垛层错能。 正常晶体中的原子按照一定的规律排列,原子面按ABCABC……的顺序排列,如下图所示: 当某个原子面被抽出后会形成堆垛层错,如图中的蓝色原子层被抽出,原子面排列变为ABCBCA……: 可通过计算堆垛层错能形成前后的能量差计算堆垛层错能,计算公式为: E0为初始能量 Ef为删除一个原子面后的能量 A为界面面积 下面分享一个lammps计算堆垛层错能的in代码,本代码由Richard Glaze完成,本文稍作修改并进行了注释,以供初

lammps_jiayou的博客 5435

Elasticsearch搜索引擎

Elasticsearch搜索引擎

m0_73922877的博客 1360

YOLOv11的流形学习压缩:局部线性嵌入(LLE)引导的特征降维,实现在CSP模块中嵌入流形结构保持约束

摘要 本文探讨了流形学习在YOLOv11目标检测模型中的应用,重点研究局部线性嵌入(LLE)方法对CSP模块的特征压缩优化。针对深度学习模型的高维特征冗余问题,LLE通过三个关键步骤实现非线性降维:寻找k近邻、计算重构权重和低维嵌入,相比传统PCA方法能更好地保持数据的局部结构。文章详细分析了LLE的数学原理和参数选择策略,并提出在YOLOv11的CSP模块中嵌入流形约束的创新设计。通过特征分割前、处理过程和融合阶段引入流形一致性损失函数,该方法能在降低特征维度的同时保持原始流形结构,从而提升模型的计算效率

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 1380

Elasticsearch + Kibana 实战指南:从安装部署到 C++ 客户端封装,解锁搜索引擎开发核心技能

本文从 Elasticsearch(ES)简介、安装到核心概念,结合 Kibana 可视化工具,全面讲解其分布式搜索能力。重点演示 C++ 客户端 API 封装,涵盖索引管理、CRUD 操作,并通过代码示例实现数据增删查改,来为后面项目操作做铺垫。

羑悻的博客. 5998

在 ABAP Cloud 里优雅地调用 HTTP 服务:新一代 HTTP Client 全面实践与落地指南

摘要: 随着ABAP Cloud时代的到来,HTTP通信在SAP系统集成中的角色日益重要。传统CL_HTTP_CLIENT存在维护成本高、边界模糊等问题,而新一代ABAP HTTP Client采用Destination驱动的调用方式,通过CL_HTTP_DESTINATION_PROVIDER支持四种创建方式(URL、通信安排、BTP Destination服务、SM59连接)。该模型将连接配置与业务逻辑分离,使URL、认证等参数可集中管理。典型调用流程包括:基于Destination创建Client,设

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 251

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Elasticsearch快速入门以及简单CRUD

编程界的小学生一、简介二、集群管理api1、查看健康状态api2、status详解3、索引管理3.1、查看索引3.2、新增索引3.3、删除索引三、CRUD1、添加1.1、语法格式1.2、Demo2、根据id搜索2.1、语法格式2.2、Demo3、修改3.1、全量覆盖3.1.1、语法格式3.1.2、Demo3.2、动态更新3.2.1、语法格式3.2.2、Demo4、删除4.1、语法格式4.2、Demo5、搜索全部5.1、语法格式5.2、Demo 一、简介 Java是面向对象的,都是Java类。Mysql是面向

【原】编程界的小学生 1851

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Elasticsearch - Java 操作 Elasticsearch 环境搭建与基础 CRUD

本文介绍了使用Java操作Elasticsearch环境的搭建与基础CRUD实现。主要内容包括: 通过Docker快速部署带安全配置的Elasticsearch 8.12.0单节点集群 创建Maven项目并集成官方Java API Client 8.12.0 初始化Elasticsearch客户端,处理TLS认证和用户凭证 提供项目结构建议和关键依赖配置 文章采用实战导向,从环境准备到代码实现,帮助开发者快速上手Elasticsearch Java客户端操作。适用于需要将Elasticsearch集成到Ja

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

【Elasticsearch】分布式搜索引擎技术学习[上]

Elasticsearch 是一项功能强大且广受欢迎的搜索引擎中间件,本文记录了学习到的有关中间件的知识点,方便日后的重温。

猿来是你 1091

01分布式搜索引擎ES

文档操作有哪些?创建文档:POST /{索引库名}/_doc/文档id { json文档 }查询文档:GET /{索引库名}/_doc/文档id删除文档:DELETE /{索引库名}/_doc/文档id修改文档:全量修改:PUT /{索引库名}/_doc/文档id { json文档 }增量修改:POST /{索引库名}/_update/文档id { “doc”: {字段}}JavaRestClient操作elasticsearch的流程基本类似。

m0_62943934的博客 1203

ElasticSearch 文档操作之文档CRUD

新增文档,请求体包含文档数据。查询文档,返回文档的原始数据(source)。删除文档,删除指定ID的文档。修改文档全量修改,替换整个文档。增量修改,只修改指定字段。

2301_80093566的博客 1438

Elasticsearch的CRUD最简单的操作

1:Elasticsearch的CRUD最简单的操作 提示 最近公司让我用es搜索完成CRUD的功能 因为是从来没用过这个 所以在看完后做个简单的记录 项目的配置文件application.yml中需要把es服务器地址配置对 我的代码结构如下 实体类 ...

头发长的程序媛的博客 2256

ElasticSearch全文搜索引擎概述、使用Kibana和JAVA的简单操作

狭义的理解主要针对文本数据的搜索。数据可分为“结构化”数据(关系数据库表形式管理的数据),半结构化数据(XML文档、JSON文档),和非结构化数据(WORD、PDF),通常而言在结构化的数据中搜索性能是比较高的,全文搜索的目的就是把非结构化的数据变成有结构化的数据进行搜索,从而提高搜索效率。Lucene是apache下的一个开源的全文检索引擎工具包(一堆jar包)。它为软件开发人员提供一个简单易用的工具包(类库),以方便的在小型目标系统中实现全文检索的功能。

weixin_60359542的博客 1455

探索Elasticsearch:索引的CRUD

在企业环境中,Elasticsearch的索引CRUD(创建Create、读取Read、更新Update、删除Delete)操作是非常基础且频繁使用的功能。这些操作对于管理和维护数据至关重要,尤其是在处理大规模数据集和需要实时搜索与分析的应用场景中。在Elasticsearch中,Index就类似数据库表,Mapping映射就类似表的结构。我们要向es中存储数据,必须先创建Index和Mapping。

2201_75732091的博客 1429

BaseEsMapper接口全解析:轻松实现Elasticsearch的CRUD操作

在Elasticsearch开发中,BaseEsMapper接口是easy-es框架的核心组件,它提供了一套完整的CRUD操作API,让开发者无需编写复杂的Elasticsearch查询语句,就能轻松实现数据的增删改查。本文将详细介绍BaseEsMapper接口的功能和使用方法,帮助新手快速上手Elasticsearch开发。 ## BaseEsMapper接口概述 BaseEsMapper接

gitblog_00231的博客 865

Java_ElasticSearch(ES)——分布式搜索引擎

Elasticsearch是一个开源的分布式搜索和分析引擎,最初由Elastic公司开发。它构建在Apache Lucene搜索引擎库之上,提供了一个强大的全文搜索和分析引擎,它结合kibana、Logstash、Beats,是一整套技术栈,被叫做ELK,适用于各种用例,包括文本搜索、日志分析、实时数据分析、监控和报警等。上述配置文件即表示添加扩展词典ext.dic,它就会在当前配置文件所在的目录中找这个文件。这种方式在文档id不存在时,就会相当于一个新增操作。

2509_94007158的博客 645
上一篇: ES-cat相关命令
下一篇: ES第五天-查询语法
darkness0604
博客等级 码龄10年 82粉丝 118原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值