Elasticsearch(简称为ES)是一个开源的搜索引擎,它构建在Lucene搜索引擎之上。它提供了一个分布式、多租户的全文搜索引擎,具有强大的实时分析能力。以下是关于Elasticsearch的一些基本概念和使用方法:
基本概念:
-
索引(Index):
- Elasticsearch中的数据存储在索引中,每个索引包含一个或多个类型的文档。
- 一个索引可以看作是一个数据库。
-
文档(Document):
- 文档是索引中的基本数据单元,用JSON格式表示。
- 一个文档对应数据库表中的一行记录。
-
类型(Type):
- Elasticsearch 6.x及以上版本中,一个索引只能包含一个类型,类型已经逐渐被弃用。
-
节点(Node):
- 节点是集群中的一个单独的服务器,用于存储数据和参与集群的索引和搜索能力。
-
集群(Cluster):
- 一个集群由一个或多个节点组成,共同存储数据并提供联合搜索和索引功能。
-
分片和副本(Shard & Replica):
- 数据在索引中被分成分片,每个分片是一个独立的Lucene索引。
- 分片可以有零个或多个副本,用于提高数据的可用性和容错性。
使用方法:
-
安装 Elasticsearch:
- 从Elasticsearch官网下载并安装Elasticsearch。
-
启动 Elasticsearch:
- 启动Elasticsearch节点,可以通过命令行或服务方式启动。
-
使用 RESTful API 进行操作:
- Elasticsearch提供了RESTful API,可以使用curl或任何支持HTTP的客户端进行交互。
- 默认端口为9200,例如:
http://localhost:9200/
。
-
索引操作:
- 创建索引:
PUT /index_name
- 删除索引:
DELETE /index_name
- 创建索引:
-
文档操作:
- 添加文档:
POST /index_name/_doc
- 获取文档:
GET /index_name/_doc/document_id
- 更新文档:
POST /index_name/_doc/document_id/_update
- 删除文档:
DELETE /index_name/_doc/document_id
- 添加文档:
-
搜索:
-
通过查询DSL进行搜索,例如:
jsonCopy code
POST /index_name/_search { "query": { "match": { "field_name": "search_term" } } }
-
-
聚合(Aggregations):
- 使用聚合框架进行数据分析。
-
Mappings:
- 映射定义了索引中的文档如何存储和索引。
示例教程:
-
Elasticsearch官方文档:提供详细的官方文档,涵盖了各个方面的信息和示例。
-
Elasticsearch权威指南(中文版):深入介绍Elasticsearch的使用和原理,非常适合初学者。
-
Elasticsearch基础教程:Tutorialspoint网站提供的基础教程,适合入门学习。
请注意,由于Elasticsearch的版本不断更新,建议查看相应版本的官方文档以获取最准确的信息。