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.mzph.cn/news/205944.shtml

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

相关文章

Kafka性能调优:高吞吐、低延迟的数据流

Apache Kafka作为一种高性能、分布式流处理平台,对于实时数据的处理至关重要。本文将深入讨论Kafka性能调优的关键策略和技术,通过丰富的示例代码为大家提供实际操作指南,以构建高吞吐、低延迟的数据流系统。 Broker 配置的优化 首先&#…

Cisco Packet Tracer配置命令——交换机篇

交换机VLAN配置 在简单的网络环境中,当交换机配置完端口后,即可直接应用,但若在复杂或规模较大的网络环境中,一般还要进行VLAN的规划,因此在交换机上还需进行 VLAN 的配置。交换机的VLAN配置工作主要有VLAN的建立与删…

【银行测试】第三方支付平台业务流,功能/性能/安全测试方法...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、第三方支付平台…

DSP外部中断笔记

中断原理 三部分 注意 ,外部中断使能,PIE使能,CPU中断使能 外部中断有7个,PIE有12组,一个组有8个中断复用。只有一个CPU中断可执行。 外部中断原理 1、外部中断概述 外部中断结构图 外部中断XINT1对应的是0到31GPI…

在vue中深度选择器的使用

一、为什么要使用深度选择器 在vue中,当我们使用了第三方库中的组件时,想要更改一些样式,达到我们想要的效果,由于scoped的影响直接编写同名样式时,是覆盖不了组件内的样式的。 为了达到我们想要的效果,…

区块链实验室(28) - 拜占庭节点劫持区块链仿真

在以前的FISCO环境中仿真拜占庭节点攻击区块链网络。该环境共有100个节点,采用PBFT作为共识机制,节点编号分别为:Node0,Node,… ,Node99。这100个节点的前2010区块完全相同,自区块2011开始分叉。…

Pytest+Allure生成自动化测试报告!

前言 在自动化测试中,有unittestHTMLTestRunner自动化测试报告,但是生成的测试报告不够美观详细,今天我们来学习一下PytestAllure生成自动化测试报告。 一:安装python中的allure依赖库 在dos窗口中,输入下面三个命令…

如何将idea中导入的文件夹中的项目识别为maven项目

问题描述 大家经常遇到导入某个文件夹的时候,需要将某个子文件夹识别为maven项目 解决方案

计算整数各位数字之和 C语言xdoj29

时间限制: 1 S 内存限制: 1000 Kb 问题描述: 假设n是一个由最多9位数字(d9, …, d1)组成的正整数。编写一个程序计算n的每一位数字之和 输入说明: 输入数据为一个正整数n 输出说明: 对整数n输出它的各位数字之和后换行 输入样例: …

金融行业文件摆渡,如何兼顾安全和效率?

金融行业是数据密集型产业,每时每刻都会产生海量的数据,业务开展时,数据在金融机构内部和内外部快速流转,进入生产的各个环节。 为了保障基础的数据安全和网络安全,金融机构采用网络隔离的方式来隔绝外部网络的有害攻击…

【动手学深度学习】(十)PyTorch 神经网络基础+GPU

文章目录 一、层和块1.自定义块2.顺序块3.在前向传播函数中执行代码 二、参数管理1.参数访问2.参数初始化3.参数绑定 三、自定义层1.不带参数的层2.带参数的层 四、读写文件1.加载和保存张量2.加载和保存模型参数五、使用GPU [相关总结]state_dict() 一、层和块 为了实现复杂神…

【EXCEL】offset函数

语法: offset(reference,row,column,[height],[width]) 例子:

【沐风老师】3dMax椅子建模教程

3dMax椅子建模详解 1.将系统单位设置为:毫米。在前视图创建一个矩形,并将四个角倒圆角。 2.开启二维图形可渲染功能,设置线条粗细。参数如图: 3.应用“FFD 2x2x2”修改器,在前视图中,选中右下角所有控制点&…

77. 组合

组合 描述 : 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 题目 : LeetCode 77. 组合 : 77. 组合 分析 : 请看回溯怎么回事 , 里面讲的很清晰 . 解析 ; class Solution {public List<List<Integ…

分布式搜索引擎03

1.数据聚合 聚合(aggregations)可以让我们极其方便的实现对数据的统计、分析、运算。例如: 什么品牌的手机最受欢迎? 这些手机的平均价格、最高价格、最低价格? 这些手机每月的销售情况如何? 实现这些统计功能的比数据库的sql要方便的多,而且查询速度非常快,可以实现近…

Zookeeper单机模式搭建

1、下载 ​wget https://dlcdn.apache.org/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3-bin.tar.gz 2、解压 tar -zxvf apache-zookeeper-3.6.3-bin.tar.gz 3、进入 apache-zookeeper-3.6.3-bin目录下&#xff0c;创建data cd apache-zookeeper-3.6.3-bin mkdir da…

Matlab 用矩阵画图

文章目录 Part.I IntroductionChap.I 预备知识Chap.II 概要Chap.III 杂记 Part.II 用矩阵画图Chap.I 摸索过程Chap.II 绘制专业图Chap.III 矩阵转tiff Part.I Introduction 本文汇总了 Matlab 用矩阵画图的几种方式。 Chap.I 预备知识 关于 *.mat 文件 *.mat文件是 matlab 的…

如何加快网络攻击发现速度

网络攻击可能会摧毁受害者。例如&#xff0c;米高梅度假村 (MGM Resorts) 预计将因 9 月份的网络攻击而遭受 1 亿美元的损失。 鲜为人知的是&#xff0c;在许多情况下&#xff0c;借助网络攻击发现可以预防网络攻击或将其消灭在萌芽状态。 威胁行为者变得越来越复杂&#xff…

网络管理相关

管理功能分为管理站manager和代理agent两部分。 网络管理&#xff1a; 网络管理系统中&#xff0c;每一个网络节点都包含有一组与管理有关的软件&#xff0c;叫做网络管理实体NME。 管理站的另外一组软件叫做网络管理应用NMA&#xff0c;提供用户接口&#xff0c;根据用户命令显…

2021年第十届数学建模国际赛小美赛B题疾病传播的风险解题全过程文档及程序

2021年第十届数学建模国际赛小美赛 B题 疾病传播的风险 原题再现&#xff1a; 空气传播疾病可以通过咳嗽或打喷嚏、喷洒液体或灰尘传播。另一方面&#xff0c;一些常见的传染病只能通过飞沫传播。请建立一个模型&#xff0c;以评估密闭空间内空气传播和液滴传播疾病的可能性。…