ElasticSearch快速入门

目录

快速入门

快速了解

与MySQL对比

相关组件,概念

增删改查


快速入门

快速了解

一、Elasticsearch 官方定义

Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,同时是可扩展的数据存储和矢量数据库,能够应对日益增多的各种用例。作为 Elastic Stack 的核心,Elasticsearch 能够集中存储您的数据,实现闪电般的搜索速度、精细的相关性调整以及强大的分析能力,并且能够轻松地进行规模扩展。

Elasticsearch 是一个基于 Lucene 的开源搜索引擎,提供了一个分布式、多租户的全文搜索引擎,具有 HTTP Web 接口和无模式 JSON 文档。它可以快速地存储、搜索和分析大量的数据。

二、主要特点

  1. 分布式架构:

    • Elasticsearch 可以在多台服务器上运行,自动将数据分布到不同的节点上,实现水平扩展。这使得它能够处理大规模的数据量和高并发的查询请求。

    • 当数据量增加时,可以轻松地添加更多的节点来扩展存储和处理能力,而无需停机或对应用程序进行重大修改。

  2. 高可用性:

    • 通过数据副本机制,即使某些节点出现故障,数据仍然可用。Elasticsearch 会自动将数据复制到多个节点上,确保数据的冗余和可靠性。

    • 如果一个节点发生故障,其他节点可以接管其工作,保证系统的持续运行。

  3. 全文搜索能力:

    • 支持对文本数据进行强大的全文搜索,能够快速找到包含特定关键词的文档。它使用倒排索引技术,将文本中的每个单词与包含该单词的文档进行关联,从而实现快速的搜索。

    • 可以进行复杂的查询,如模糊搜索、通配符搜索、短语搜索等,满足各种不同的搜索需求。

  4. 实时性:

    • 数据可以在写入后立即被搜索到,实现实时的数据分析和查询。这对于需要快速响应变化的应用场景非常重要,如实时监控、日志分析等。

    • 新写入的数据会被快速地索引并可用于搜索,无需等待批量处理或长时间的索引过程。

  5. 灵活的数据模型:

    • Elasticsearch 支持无模式的数据存储,即可以存储任意格式的 JSON 文档,无需预先定义数据结构。这使得它非常适合处理半结构化和非结构化数据。

    • 可以根据实际需求随时添加或修改字段,而不会影响现有数据的存储和查询。

三、主要应用场景

  1. 搜索应用:

    • 构建企业内部的搜索系统,如文档搜索、知识库搜索等。可以快速地搜索和查找企业内部的各种文档、报告、知识库文章等,提高员工的工作效率。

    • 电商网站的商品搜索,提供快速、准确的商品搜索功能,帮助用户找到所需的商品。

  2. 日志分析:

    • 集中存储和分析应用程序的日志数据,快速定位问题和异常情况。可以对日志进行实时监控,及时发现系统中的错误和异常,以便进行快速的故障排除。

    • 安全日志分析,检测潜在的安全威胁和异常行为。通过对安全日志的分析,可以及时发现入侵行为、异常登录等安全问题。

  3. 数据分析:

    • 对大量的数据进行实时分析,如网站流量分析、用户行为分析等。可以快速地聚合和分析数据,生成各种报表和指标,为业务决策提供数据支持。

    • 物联网数据分析,处理和分析来自物联网设备的大量数据,实时监测设备状态和行为。

四、与主流技术的相似性和区别

  1. 与 Solr 的相似性和区别:

    • 相似性:

      • 两者都是基于 Lucene 的开源搜索引擎,都提供了强大的全文搜索功能。

      • 都支持分布式架构,可以处理大规模的数据量。

    • 区别:

      • 数据存储方式:Elasticsearch 是基于 JSON 文档的无模式存储,而 Solr 通常需要定义严格的模式。这使得 Elasticsearch 在处理半结构化和非结构化数据时更加灵活。

      • 实时性:Elasticsearch 具有更好的实时性,数据可以在写入后立即被搜索到,而 Solr 需要一定的时间进行索引更新。

      • 社区活跃度:Elasticsearch 的社区活跃度较高,更新频繁,提供了更多的功能和插件。

  2. 与传统关系型数据库的区别:

    • 数据模型:关系型数据库通常需要预先定义严格的数据模式,而 Elasticsearch 支持无模式的数据存储。

    • 查询语言:关系型数据库使用 SQL 进行查询,而 Elasticsearch 使用基于 JSON 的查询语言 DSL(Domain Specific Language)。

    • 应用场景:关系型数据库适用于结构化数据的存储和管理,以及复杂的事务处理;而 Elasticsearch 主要用于全文搜索和实时数据分析。

什么是elasticsearch? 一个开源的分布式搜索引擎,可以用来实现搜索、日志统计、分析 系统监控等功能 什么是elastic stack (ELK) ? 是以elasticsearch为核心的技术栈,包括beats、Logstash、kibana、elasticsearch 什么是Lucene? 是Apache的开源搜索引擎类库,提供了搜索引擎的核心API

相比与lucene,elasticsearch具备下列优势

  • 支持分布式,可水平扩展

  • 提供Restful接口,可被任何语言调用

与MySQL对比

相关组件,概念

elasticsearch结合kibana、Logstash、Beats,也就是elastic stack(ELK)

Kibana 数据可视化组件(提供ES可视化界面,可以操作ES)、LogstashBeats数据抓取组件。(这些组件都可以替换)

IK分词器:对中文一个一个词语的划分,避免汉字在ES中每个字都要划分(依赖于某一字典,所以词语有限,但也可以在配置文件中添加自己的扩展字典,删除没必要的词字典)

Mapping映射约束,Analyzer:Mapping中的属性,选择使用哪种分词器。分完的每个词称为term。

增删改查

以下是在 Elasticsearch(ES)中对文档和索引的增删改查操作示例:

一、文档的增删改查

  1. 增加文档

    • 使用 PUT 或 POST 请求向特定索引中添加文档。

    • 示例:

    • 解释:向名为 "my_index" 的索引中添加一个 ID 为 1 的文档,文档包含 "title" 和 "content" 两个字段。

  2. 删除文档

  3. 修改文档

    • 使用 POST 请求结合 "_update" 端点更新文档。

    • 示例:

    • 解释:更新 "my_index" 索引中 ID 为 1 的文档的 "title" 字段。

  4. 查询文档

二、索引的增删改查

  1. 增加索引

    • 通常无需显式创建索引,在添加文档时如果索引不存在会自动创建。但也可以使用 PUT 请求手动创建索引并定义映射。

    • 示例:

    • 解释:创建名为 "new_index" 的索引,并定义了两个字段 "field1" 和 "field2" 的类型。

  2. 删除索引

  3. 修改索引设置或映射

    • 使用 PUT 请求更新索引的设置或映射。

    • 示例:更新索引的副本数量。

    • 解释:将 "my_index" 索引的副本数量设置为 2。

  4. 查询索引信息

    • 使用 GET 请求获取索引的信息。

    • 示例:

    • 解释:查询名为 "my_index" 的索引的信息,包括设置、映射、统计信息等

示例:

相关推荐
it噩梦10 小时前
elasticsearch中使用fuzzy查询
elasticsearch
喝醉酒的小白12 小时前
Elasticsearch相关知识@1
大数据·elasticsearch·搜索引擎
小小工匠13 小时前
ElasticSearch - 深入解析 Elasticsearch Composite Aggregation 的分页与去重机制
elasticsearch·composite·after_key·桶聚合分页
风_流沙14 小时前
java 对ElasticSearch数据库操作封装工具类(对你是否适用嘞)
java·数据库·elasticsearch
TGB-Earnest15 小时前
【py脚本+logstash+es实现自动化检测工具】
大数据·elasticsearch·自动化
woshiabc1111 天前
windows安装Elasticsearch及增删改查操作
大数据·elasticsearch·搜索引擎
arnold661 天前
探索 ElasticSearch:性能优化之道
大数据·elasticsearch·性能优化
成长的小牛2331 天前
es使用knn向量检索中numCandidates和k应该如何配比更合适
大数据·elasticsearch·搜索引擎
Elastic 中国社区官方博客1 天前
Elasticsearch:什么是查询语言?
大数据·数据库·elasticsearch·搜索引擎·oracle
启明真纳1 天前
elasticache备份
运维·elasticsearch·云原生·kubernetes