ELK(四)—els基本操作

目录

  • elasticsearch基本概念
    • RESTful API
    • 创建非结构化索引
      • (增)创建空索引
      • (删)删除索引
      • (改)插入数据
      • (改)数据更新
      • (查)搜索数据(id)
      • (查)搜索数据(全部)
      • (查)关键字搜索数据
      • (查)DSL搜索
      • 其他(聚合)

elasticsearch基本概念

Elasticsearch 是一个分布式搜索引擎,用于全文搜索、分析和可视化大规模数据。以下是 Elasticsearch 中一些基本概念:

  1. 索引(Index)
    • Elasticsearch 中的数据存储单元,类似于传统数据库中的数据库。每个索引包含一组相关的文档。
  2. 文档(Document)
    • 索引中的基本信息单元,可以是 JSON、XML、或其他格式的数据。文档是 Elasticsearch 中可被索引和搜索的基本数据单元。
  3. 类型(Type)(在7.x版本之前):
    • Elasticsearch 6.x及更早版本中,索引可以包含一个或多个类型,每个类型定义了文档的结构。从 Elasticsearch 7.x 开始,不再支持多类型,一个索引只有一个默认类型 “_doc”。
  4. 映射(Mapping)
    • 定义了索引中的文档结构,包括每个字段的类型和属性。映射在创建索引时自动创建,也可以手动定义。
  5. 节点(Node)
    • Elasticsearch 集群中的单个服务器,用于存储数据和执行数据操作。每个节点属于一个集群,并且有唯一的名称。
  6. 集群(Cluster)
    • 由一个或多个节点组成的集合,共同存储数据并提供联合的搜索能力。集群有一个唯一的名称。
  7. 分片(Shard)
    • 索引可以被分割成多个分片,每个分片是一个独立的索引。分片允许数据水平扩展,提高并发性能。
  8. 副本(Replica)
    • 每个分片可以有零个或多个副本。副本是分片的精确拷贝,用于提高高可用性和故障恢复。
  9. 查询(Query)
    • 用于搜索 Elasticsearch 中文档的条件。可以通过查询DSL(Domain Specific Language)来构建各种类型的查询。
  10. 聚合(Aggregation)
    • 用于分析和统计数据的机制,可以计算平均值、总和、最小值等。
  11. 索引别名(Index Alias)
    • 为索引提供一个可读的名称,可以用于简化索引操作和在查询中引用多个索引。
  12. 分析器(Analyzer)
    • 用于在索引和查询阶段处理文本数据的组件,包括分词、小写化、去停用词等。
  13. 倒排索引(Inverted Index)
    • Elasticsearch 使用倒排索引来加速搜索,它记录了每个词项出现在哪些文档中。

这些是 Elasticsearch 中一些基本的概念,了解它们有助于更好地理解和使用 Elasticsearch 进行数据存储和检索。

RESTful API

在Elasticsearch中,提供了功能丰富的RESTful API的操作,包括基本的CRUD、创建索引、删除索引等操作。

创建非结构化索引

在Lucene中,创建索引是需要定义字段名称以及字段的类型的,在Elasticsearch中提供了非结构化的索引,就是不需要创建索引结构,即可写入数据到索引中,实际上在Elasticsearch底层会进行结构化操作,此操作对用户是透明的。

(增)创建空索引

PUT /elk
{"settings":{"index":{"number_of_shards":"2","number_of_replicas":"0"}}
}

这里我选择postman进行测试。

image.png

去elasticsearch-head看是否索引创建是否成功。

image.png

可以看到索引已经创建成功了。

(删)删除索引

DELETE /elk
{"acknowledged": true
}

在postman中进行删除操作

image.png

检查是否删除成功

image.png

可以看到已经删除成功了

(改)插入数据

上面我们已经学会了如何创建好删除索引,现在我们进行数据的添加操作。

URL规则:
POST /{索引}/{类型}/{id}

插入如下数据。

{
"id":1001,
"name":"王五",
"age":18,
"sex":"男"
}

image.png

postman中显示插入成功了。

浏览器上是否也是插入成功呢?

image.png

可以看到数据已经成功插入了。

(改)数据更新

在Elasticsearch中,文档数据是不为修改的,但是可以通过覆盖的方式进行更新。

{
"id":1001,
"name":"王老五",
"age":55,
"sex":"男"
}

image.png

image.png

服务器中的数据也成功更新了。

问题与探究问题与探究问题与探究

可以看到数据已经被覆盖了。问题来了,可以局部更新吗? – 可以的。前面不是说,文档数据不能更新吗?
其实是这样的:在内部,依然会查询到这个文档数据,然后进行覆盖操作,步骤如下:

  1. 从旧文档中检索JSON
  2. 修改它
  3. 删除旧文档
  4. 索引新文档
#注意:这里多了_update标识POST /haoke/_update/1001
{
"doc":{
"age":66
}
}

image.png

image.png

可以看到数据已经成功更新了。

我们需要id存在,否则会报错,也就是404

image.png

当id存在,我们可以往数据添加原先没有的数据。

image.png

image.png

(查)搜索数据(id)

GET /elk/_doc/id

image.png

我们也可以直接在elasticsearch中进行搜索

image.png

(查)搜索数据(全部)

GET  /elk/_search

image.png

同样的,查询全部也可以直接在elasticsearch-head中的基本查询中进行搜索。

image.png

(查)关键字搜索数据

#格式
GET /elk/_search?q=字段名:对应值#查询年龄等于13的用户
GET /elk/_search?q=age:20

image.png

#查询年龄等于13的用户
GET /elk/_search?q=address:湖南

image.png

(查)DSL搜索

Elasticsearch的DSL(Domain-Specific Language)是一种查询语言,用于在Elasticsearch中执行搜索操作。DSL允许用户以结构化的方式构建复杂的查询,以满足不同的搜索需求。DSL查询通常以JSON格式表示,并包含各种查询和过滤条件。

以下是一些常见的DSL查询语法和查询类型的详细解释:

  1. Match Query:
    Match查询用于执行全文本搜索,它会在指定的字段中查找包含特定词语的文档。

    {"query": {"match": {"field_name": "search_term"}}
    }
    
    
    

    匹配年龄为20的数据

    POST /elk/_search
    #请求体
    {"query" : {"match" : {"age" : 23}}
    }
    

    image.png

    匹配多个姓名数据

    POST /elk/_search
    #请求数据
    {"query" : {"match" : {"name" : "张四 李三 王老五"}}
    }
    

    image.png

    高亮显示

    POST /elk/_search
    #请求数据
    {"query": {"match": {"name": "王老五"}},"highlight": {"fields": {"name": {}}}
    }
    

    image.png

  2. Term Query:
    Term查询用于匹配确切的词语。它通常用于精确匹配,而不进行全文本搜索。

    {"query": {"term": {"field_name": "exact_term"}}
    }
    
  3. Bool Query: Bool查询允许将多个查询组合在一起,并使用逻辑运算符(must、must_not、should)来定义查询逻辑。

    {"query": {"bool": {"must": [{ "match": { "field1": "value1" } },{ "term": { "field2": "value2" } }],"must_not": [{ "range": { "field3": { "gte": "2022-01-01" } } }],"should": [{ "term": { "field4": "value3" } }]}}
    }
    

    查询年龄大于18岁的男性用户。

    POST /elk/user/_search
    #请求数据
    {"query": {"bool": {"filter": {"range": {"age": {"gt": 18}}},"must": {"match": {"sex": "男"}}}}
    }
    
  4. Range Query:
    Range查询用于匹配指定范围内的值。

    {"query": {"range": {"field_name": {"gte": "min_value","lte": "max_value"}}}
    }
    
  5. Wildcard Query:
    通配符查询允许使用通配符进行模糊匹配。

    {"query": {"wildcard": {"field_name": "search*term"}}
    }
    
  6. Nested Query:
    Nested查询用于在嵌套文档中执行查询。

    {"query": {"nested": {"path": "nested_field","query": {"match": {"nested_field.property": "value"}}}}
    }
    

这些是一些基本的DSL查询示例。在实际应用中,可以将这些查询类型组合使用,以满足特定的搜索需求。此外,Elasticsearch还支持聚合(Aggregation)、排序(Sorting)、分页(Pagination)等高级功能,可以进一步扩展查询的能力。

其他(聚合)

在Elasticsearch中,支持聚合操作,类似SQL中的group by操作。

POST /elk/_search
{"aggs": {"all_interests": {"terms": {"field": "age"}}}
}

image.png

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

倚天屠龙:Github Copilot vs Cursor

武林至尊,宝刀屠龙。号令天下,莫敢不从。倚天不出,谁与争锋! 作为开发人员吃饭的家伙,一款好的开发工具对开发人员的帮助是无法估量的。还记得在学校读书的时候,当时流行CS架构的RAD,Delphi和V…

xcode swiftui项目添加依赖

打开项目targets——Build Phases 点击“” 属于Apple SDKs的依赖可以直接添加 其他依赖需要在 Add Other中添加,在右上角用名字搜索或者URL地址(如GitHub上插件的地址)搜索,然后添加,也可添加本地文件

USB Type-C一拖二线缆制作方法

1 实现方法 Figure 1-1 Type-C Socket(母口) Figure 1-2 Type-C Plug(公头) Table 1-1 Type-C Socket Pin连接描述 Type-C Plug连接, 需要做一个一拖二的线,一根的一端是USB, 另外一根的一端是USB转UART, 参考Table 1-2。 Table 1…

css 修改滚动条样式,解决Windows浏览器中滚动条不美观问题

Windows环境中的浏览器中滚动条默认是直接显示了,不管光标是否进入该区域,这样就很不美观,如下图: 之前样式为 .well {display: block;background-color: #f2f2f2;border: 1px solid #ccc;margin: 5px;width: calc(100% - 12px);h…

spark sql基于RBO的优化

前言 这里只对RBO优化进行简单的讲解。讲解RBO之前必须对spark sql的执行计划做一个简单的介绍。 这个里讲解的不是很清楚,需要结合具体的执行计划来进行查看 1、执行计划 在spark sql的执行计划中,执行计划分为两大类,即逻辑执行计划、物…

uniapp 打开文件管理器上传(H5、微信小程序、android app三端)文件

H5跟安卓APP 手机打开的效果图&#xff1a; Vue页面&#xff1a; <template><view class"content"><button click"uploadFiles">点击上传</button></view> </template><script>export default {data() {return…

云原生之深入解析Kubernetes策略引擎对比:OPA/Gatekeeper与Kyverno

一、前言 ① Kubernetes 策略 Kubernetes 的 Pod Security Policy&#xff0c;正如其名字所暗示的&#xff0c;仅是针对 Pod 工作的&#xff0c;是一种用来验证和控制 Pod 及其属性的机制。另外 PSP 只能屏蔽非法 Pod 的创建&#xff0c;无法执行任何补救/纠正措施。而 Gatek…

http与apache

目录 1.http相关概念 2.http请求的完整过程 3.访问浏览器背后的原理过程 4.动态页面与静态页面区别 静态页面&#xff1a; 动态页面&#xff1a; 5.http协议版本 6.http请求方法 7.HTTP协议报文格式 8.http响应状态码 1xx&#xff1a;提示信息 2xx&#xff1a;成功…

【C++11并发】Atomic 笔记

简介 用atomic定义的变量&#xff0c;支持原子操作&#xff0c;即要么全部完成操作&#xff0c;要不全部没有完成&#xff0c;我们是不可能看到中间状态。一般在多线程程序中&#xff0c;可以用atomic来完成数据同步。 标准库为我们主要提供了四类工具 atomic类模板操作atomi…

tomcat启动 页面报错404(3种解决方案)

1.端口号被占用 修改配置文件下的端口号&#xff1a;\apache-tomcat-8.5.57\conf\server.xml 我这里修改端口号为&#xff1a;9999 修改后页面输入&#xff1a;http://localhost:9999/ 2.没有配置环境变量 配置环境变量请查看&#xff1a;保姆级教程 3.查看下 apache-tomca…

SpringBoot Seata 死锁问题排查

现象描述&#xff1a;Spring Boot项目&#xff0c;启动的时候卡住了&#xff0c;一直卡在那里不动&#xff0c;没有报错&#xff0c;也没有日志输出 但是&#xff0c;奇怪的是&#xff0c;本地可以正常启动 好吧&#xff0c;姑且先不深究为什么本地可以启动而部署到服务器上就无…

【Flink系列五】Checkpoint及Barrier原理

本章内容 一致性检查点从检查点恢复状态检查点实现算法-barrier保存点Savepoint状态后端&#xff08;state backend&#xff09; 本文先设置一个前提&#xff0c;流处理的数据都是可回放的&#xff08;可以理解成消费的kafka的数据&#xff09; 一致性检查点&#xff08;che…

单片机第三季-第四课:STM32下载、MDK和调试器

目录 1&#xff0c;扩展板使用的STM32芯片类型 2&#xff0c;使用普中科技软件下载程序 3&#xff0c;keil介绍 4&#xff0c;JLINK调试器介绍 5&#xff0c;使用普中的调试器进行debug 6&#xff0c;使用Simulator仿真 1&#xff0c;扩展板使用的STM32芯片类型 扩展版…

如何用docker在自己服务器上部署springboot项目

一、将springboot项目打包 1、maven clean项目 2、maven package项目 打包成功之后生成jar文件&#xff08;在target目录下&#xff09; 3、为Java创建Dockerfile 引入jdk8的Docker镜像 FROM openjdk:8 为了使运行其余命令时更容易&#xff0c;让我们设置映像的工作目录。这将…

1、初识 llvm源码编译 及virtualbox和ubuntu环境搭建

很久没更新了&#xff0c;最近准备研究逆向和加固&#xff0c;于是跟着看雪hanbing老师学习彻底搞懂ollvm&#xff0c;终于把所有流程跑通了&#xff0c;中间遇到了太多的坑&#xff0c;所以必须记录一下&#xff0c;能避免自己和帮助他人最好。 环境搭建太重要了&#xff0c;…

26、pytest使用allure解读

官方实例 # content of pytest_quick_start_test.py import allurepytestmark [allure.epic("My first epic"), allure.feature("Quick start feature")]allure.id(1) allure.story("Simple story") allure.title("test_allure_simple_te…

LabVIEW使用单板RIO开发远程监控电源信号

LabVIEW使用单板RIO开发远程监控电源信号 设计和构建用于智能电网的本地功耗分析系统&#xff0c;主要服务于领先的电力监控设备设计者和制造商。随着智能电网投资的增加&#xff0c;对于能够有效处理替代电源&#xff08;如太阳能和风能&#xff09;间歇性功率水平的技术需求…

vue 提交表单重复点击,重复提交防抖问题

问题&#xff1a;用户点击保存时&#xff0c;可能会多次点击。导致生成重复数据。 目标&#xff1a;多次点击时&#xff0c;1s内只允许提交一次数据。 解决方案&#xff1a; 1.在utils文件夹创建文件preventReClick.js export default {install (Vue) {// 防止按钮重复点击V…

lv11 嵌入式开发 IIC(上) 19

目录 1 IIC总线简介 1.1 串行、半双工&#xff08;同时只能1收或者1发&#xff09; 1.2 IIC总线通信过程 2 IIC总线信号实现 2.1 IIC总线寻址方式 2.2 起始信号和停止信号 2.3 字节传送与应答 2.4 同步信号 2.5 典型IIC时序 3 练习 1 IIC总线简介 1.1 串行、半双工&a…

2.5D封装与3D IC封装主流产品介绍

2.5D封装和3D IC封装都是新兴的半导体封装技术&#xff0c;它们都可以实现芯片间的高速、高密度互连&#xff0c;从而提高系统的性能和集成度。但是它们之间也存在一些差异和异同点。 1、3D 结构与 2.5D 有何不同&#xff1f; 首先&#xff0c;2.5D封装和3D IC封装的互连方式有…