ElasticSearch入门

简介:

ElasticSearch是一个开源的分布式搜索分析引擎,近实时和分布式存储,搜索,分析引擎。类似产品如Solr(Apache开源项目),Splunk等产品。因为ElasticSearch是基于Lucene开发的,Lucene是ES的基础,Lucene提供了高性能,易扩展的特性,但是原生不支持水平扩展,并且原生接口学习成本高,只能基于Java语言开发。这使得ES使用Lucene底层接口进行二次开发和扩展。

ES支持单机模式和集群模式,并且支持节点类型架构。

ES提供了哪些功能 ,大体上是三类:海量数据的分户式存储以及集群管理,近实时搜索,聚合等功能。

基础概念:

文档 :

ElasticSearch是面向文档的,文档是所有可搜索数据的最小单位,文档在ES中会被序列化层JSON格式的数据,每个文档都一个一个文档ID,文档ID可以自动生成和自定义,ID可以唯一标识一个文档数据。一条文档数据中又包括了一系列的字段,类似于数据库中的一条记录,ES中也会自动推算存储的数据类型,支持丰富的数据类型。

元数据:

用于标注文档的元数据信息:

_index文档所属索引名
_type文档所属类型(6.0后废除,7.0type只能是_doc)
_id文档唯一id
_source文档原始的JSON数据
_version文档的版本信息,解决并发冲突问题
_score相关性打分

索引:

相似文档的集合,类似于数据库,一个索引表示存储一类数据。一个索引包括mapping和setting,mapping定义索引存储文档的字段类型,setting定义索引分布情况-一般是主副分片调配,索引状态配置等。

节点:

运行了单个实例的ES主机称为节点,它是集群的一个成员,可以存储数据、参与集群索引及搜索操作。通过配置可以指定主节点和从节点,或者让其自动选举也可以。

节点类型:data-数据节点,coordination-协调节点,默认都是协调节点,hot-热节点,高效对外提供搜索,warm-冷节点,搜索效率较低,machine learning-机器学习节点,ingest-预热节点,文档存储前的预处理。

分片:

ES中一个分片就是一个Lucene实例,“分片(shard)”机制可将一个索引内部的数据分布地存储于多个节点,它通过将一个索引切分为多个底层物理的Lucene索引完成索引数据的分割存储功能,这每一个物理的Lucene索引称为一个分片(shard)。每个分片其内部都是一个全功能且独立的索引,因此可由集群中的任何主机存储。创建索引时,用户可指定其分片的数量,默认数量为1个,后续不可修改,除非是reindex操作。

副本:

Shard有两种类型:primary和replica,即主shard及副本shard。Primary shard用于文档存储,每个新的索引会自动创建1个Primary shard,当然此数量可在索引创建之前通过配置自行定义,不过,一旦创建完成,其Primary shard的数量将不可更改。Replica shard是Primary Shard的副本,用于冗余数据及提高搜索性能。每个Primary shard默认配置了一个Replica shard,但也可以配置多个,且其数量可动态更改。

段:

索引中最小的独立存储单元。一个索引文件由一个或者多个段组成。在Lucene中,段有不变性,段一旦生成,在段上只能读取、不可写入。这也是为什么ES中数据没有真正删除,只是被标识然后存储到删除文档中。

 

 

 

 

### Elasticsearch 入门教程 #### 了解基本概念 Elasticsearch 是一种分布式搜索引擎,支持全文检索、结构化检索以及分析功能。其核心组件包括索引结构、查询解析器、查询执行器和缓存机制等[^1]。 #### 安装与配置 为了能够处理特定语言(如中文),可能需要安装额外的插件来增强分词能力。例如,可以通过如下命令安装 `IK Analyzer` 插件: ```bash ./elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.2/elasticsearch-analysis-ik-7.6.2.zip ``` 此操作将扩展 Elasticsearch 对于复杂文本的理解和支持[^2]。 #### 集群组建 当首次启动单个节点时,默认情况下它会自动形成名为 "elasticsearch" 的集群,并成为该集群的一部分。这意味着即使只有一个实例也在运行着完整的集群环境[^3]。 #### 数据管理 在 Elasticsearch 中,数据被存储为文档的形式,这些文档会被分配到不同的索引内。每个索引可以看作是一个逻辑容器,用于保存相似类型的记录集合。通过定义映射(mapping),用户能指定每种字段的数据类型及其属性。 #### 查询方式 对于简单的关键词匹配需求来说,可以直接利用 RESTful API 发送 HTTP 请求来进行搜索请求;而对于更复杂的条件组合,则需构建 JSON 格式的 DSL (Domain Specific Language) 来表达意图。DSL 提供了一套灵活而强大的语法体系,允许开发者精确控制查找范围及排序规则等细节。 #### 实际案例:中文关键字搜索 假设要在一个包含大量文章摘要的信息库中寻找关于“人工智能”的资料,那么就可以编写类似于下面这样的查询语句: ```json GET /article/_search { "query": { "match_phrase": { "content": "人工智能" } } } ``` 这段代码表示从名称为 `article` 的索引里筛选出那些内容(`content`)中含有短语 “人工智能” 的条目。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值