Elasticsearch基础

Elasticsearch是一个强大的分布式搜索引擎,支持全文本、结构化和非结构化数据的搜索与分析。它广泛应用于日志收集(如ELK或EFK栈)、数据存储、安全管理及机器学习等领域,提供RESTful接口,易于集成,并具备高可用性和可扩展性。
摘要由CSDN通过智能技术生成

Elasticsearch

一、概述

Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。作为 Elastic Stack 的核心,Elasticsearch 会集中存储数据,快速完成搜索,微调相关性,进行强大的分析,并轻松缩放规模。

二、应用场景

数字、文本、地理位置、结构化数据、非结构化数据。适用于所有数据类型。全文本搜索只是全球众多公司利用 Elasticsearch 解决各种挑战的冰山一角。查看直接依托 Elastic Stack 所构建解决方案的完整列表。

三、功能

Elasticsearch 是一个分布式的 RESTful 搜索和分析引擎,可用来集中存储数据,以便您对形形色色、规模不一的数据进行搜索、索引和分析。

3.1 管理和运行
可扩展性和弹性安全性客户端集成
聚类和高可用性Elasticsearch 安全设定语言客户端Elasticsearch-Hadoop
自动节点恢复加密通信Elasticsearch DSLApache Hive
自动数据再平衡数据静态加密支持Elasticsearch SQLApache Pig
水平可扩展性基于角色的访问控制 (RBAC)事件查询语言 (EQL)Apache Spark
机架意识基于属性的访问控制 (ABAC)JDBC 客户端Apache Storm
跨集群复制字段和文档级别安全性ODBC 客户端商业智能 (BI)
跨数据中心复制审计日志面向 Elasticsearch 的 Tableau 连接器插件和集成
管理IP 筛选CLI 工具部署
从快照恢复Security RealmREST API下载并安装
索引生命周期管理单点登录 (SSO)文档 APIElastic Cloud
数据层第三方安全性集成搜索 APIElastic Cloud Enterprise
快照生命周期管理Alerting聚合 APIElastic Cloud on Kubernetes
快照和还原高可用性、可扩展警报采集 APIHelm Charts
可搜索快照通过电子邮件、Webhook、IBM Resilient、Jira、Microsoft Teams、PagerDuty、ServiceNow、Slack 和 xMatters 传送的通知管理 APIDocker 容器化
数据汇总
数据流
Transforms
升级助手 API
API 密钥管理
3.2 采集和扩充
数据采集
客户端和 API
采集节点
Beats
Logstash
社区贡献的采集器
数据扩充
Elastic Common Schema
处理器
分析器
分词器
筛选
语言分析器
动态映射
Match enrich 处理器
Geo-match enrich 处理器
3.3 数据存储
灵活性
数据类型
全文本搜索(倒排索引)
文档存储库(针对非结构化数据)
时序/分析(列式存储库)
地理空间(BKD 树)
安全性
字段级和文档级 API 安全性
数据静态加密支持
管理
集群式索引
数据快照和还原
汇总索引
3.4 搜索和分析
全文本搜索
倒排索引
运行时字段
查找运行时字段
跨集群搜索
相关性评分
矢量搜索 (ANN)
查询 DSL
非同步搜索
Highlighter
自动补全 (auto-complete)
提示器 (did-you-mean)
更正(拼写检查)
Percolator
查询剖析器/优化器
基于许可的搜索结果
动态可更新同义词
结果固定
分析
聚合
Graph 探索
Machine Learning
时序型预测
时序型数据异常监测
异常情况警报
推理
语言识别
全文本搜索
倒排索引
运行时字段
查找运行时字段
跨集群搜索
相关性评分
矢量搜索 (ANN)
查询 DSL (Domain Specific Language)
非同步搜索
Highlighter
自动补全 (auto-complete)
提示器 (did-you-mean)
更正(拼写检查)
Percolator
查询剖析器/优化器
基于许可的搜索结果
动态可更新同义词
结果固定
分析
聚合
Graph 探索
Machine Learning
时序型预测
时序型数据异常监测
异常情况警报
推理
语言识别

四、基本概念

索引(indices)-------------------Databases 数据库
类型(type)----------------------Table 数据表
文档(Document)---------------Row 行
字段(Field)---------------------Columns 列

概念说明
索引库(indices)indices是index的复数,代表许多的索引,
类型(type)类型是模拟mysql中的table概念,一个索引库下可以有不同类型的索引,比如商品索引,订单索引,其数据格式不同。不过这会导致索引库混乱,因此未来版本中会移除这个概念
文档(document)存入索引库原始的数据。比如每一条商品信息,就是一个文档
字段(field)文档中的属性
映射配置(mappings)字段的数据类型、属性、是否索引、是否存储等特性

常见查询类型:

概念说明
查询所有查询出所有数据,一般测试用。例如:match_all
全文检索(full text)查询利用分词器对用户输入内容分词,然后去倒排索引库中匹配。例如:match_query,根据一个字段查询multi_match_query,根据多个字段查询,参与查询字段越多,查询性能越差
精确查询根据精确词条值查找数据,一般是查找keyword、数值、日期、boolean等类型字段。如:ids,range,根据值的范围查询,term,根据词条精确值查询
地理(geo)查询根据经纬度查询。例如:geo_distance,查询到指定中心点小于某个距离值的所有文档,geo_bounding_box
复合(compound)查询复合查询可以将上述各种查询条件组合起来,合并查询条件。例如:Bool,布尔查询是一个或多个查询子句的组合,其中包括must,should,must_not,filter,function_score,算分函数查询,可以控制文档相关性算分,控制文档排名
分页、深度分页elasticsearch 默认情况下只返回top10的数据。如果要查询更多数据,通过修改from、size参数来控制要返回的分页结果。例如:from + size,优点:支持随机翻页缺点:深度分页问题,默认查询上限(from + size)是10000;search after:分页时需要排序,原理是从上一次的排序值开始,查询下一页数据。官方推荐使用的方式。优点:没有查询上限(单次查询的size不超过10000)缺点:只能向后逐页查询,不支持随机翻页;scroll:原理将排序数据形成快照,保存在内存。官方已经不推荐使用。优点:没有查询上限(单次查询的size不超过10000)缺点:会有额外内存消耗,并且搜索结果是非实时的

数据聚合:
参与聚合的字段类型必须是key,数值,日期,布尔

概念说明
桶(Bucket)聚合用来对文档做分组,并统计每组数量。例如,TermAggregation:按照文档字段值分组;Date Histogram:按照日期阶梯分组,例如一周为一组,或者一月为一组
度量(Metric)聚合用以计算一些值,比如:最大值、最小值、平均值等。例如,Avg:求平均值;Max:求最大值;Min:求最小值;Stats:同时求max、min、avg、sum等
管道(pipeline)聚合其它聚合的结果为基础做聚合

桶聚合样例:

GET /hotel/_search
{
  "query": {
    "range": {
      "price": {
        "lte": 200 // 只对200元以下的文档聚合
      }
    }
  }, 
  "size": 0, 
  "aggs": {
    "brandAgg": {
      "terms": {
        "field": "brand",
        "size": 20
      }
    }
  }
}

aggs代表聚合,与query同级,此时query的作用是?
•限定聚合的的文档范围
聚合必须的三要素:
•聚合名称
•聚合类型
•聚合字段
聚合可配置属性有:
•size:指定聚合结果数量
•order:指定聚合结果排序方式
•field:指定聚合字段

度量样例:

GET /hotel/_search
{
  "size": 0, 
  "aggs": {
    "brandAgg": { 
      "terms": { 
        "field": "brand", 
        "size": 20
      },
      "aggs": { // 是brands聚合的子聚合,也就是分组后对每组分别计算
        "score_stats": { // 聚合名称
          "stats": { // 聚合类型,这里stats可以计算min、max、avg等
            "field": "score" // 聚合字段,这里是score
          }
        }
      }
    }
  }
}

五、ELK和EFK

1.ELK

是Elasticsearch、Logstash、Kibana的开源软件的缩写。

2.EFK

是Elasticsearch、Filebeat、Kibana的开源软件的缩写。

3.容器中日志收集方案
方案一、Node节点上部署一个日志收集程序

优点:每个Node仅需部署一个日志收集程序,资源消耗少,对应用无入侵
缺点:应用程序日志需要写到标准输出和标准错误输出,不支持多行日志收集

方案二:Pod中附加专用日志收集的容器

优点:低耦合
缺点:每个Pod启动一个日志收集代理,增加资源消耗,并增加运维维护成本

方案三:应用程序直接推送日志

优点:无需额外收集工具
缺点:侵入应用,增加应用复杂度

文献参考:https://www.elastic.co/cn/elasticsearch/features/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值