本文共 2880 字,大约阅读时间需要 9 分钟。
Elasticsearch 是一个分布式、RESTful 式的搜索和数据分析引擎,简称 ES。在国内也被称为 ES。它是基于 Lucene 开发的全文检索引擎,提供了更高级的功能和接口。虽然 Lucene 本身是一个强大的全文检索库,但直接使用 Lucene 可能会比较复杂。Elasticsearch 在 Lucene 的基础上扩展,提供了更高级的搜索和数据分析功能。
Elasticsearch 的主要功能包括:
Elasticsearch 的底层是 Lucene,但它提供了 RESTful API,用户可以通过简单的 HTTP 请求来操作,无需直接调用 Lucene 的低层接口。相比单机的 Lucene,Elasticsearch 支持分布式架构,能够处理更大的数据量和更复杂的查询需求。
安装 Elasticsearch 相对简单。以下是基于 macOS 的安装步骤:
tar -zxvf elasticsearch-7.9.0-darwin-x86_64.tar.gz /usr/local/Cellar
cd /usr/local/Cellar/elasticsearch-7.9.0/darwin-x86_64/bin./elasticsearch
Kibana 是 Elasticsearch 的可视化工具,支持通过图表和可视化界面操作 Elasticsearch 数据。安装步骤类似于 Elasticsearch:
tar -zxvf kibana-7.9.1-darwin-x86_64.tar.gz
cd /usr/local/Cellar/kibana-7.9.1/darwin-x86_64/bin./kibana
Elasticsearch 的存储结构与传统数据库(如 MySQL)有所不同:
Elasticsearch | MySQL |
---|---|
Index (索引) | Database (数据库) |
Document (文档) | Row (行) |
Field (字段) | Column (字段) |
Mapping (映射) | Table Structure (表结构) |
索引相当于 MySQL 的数据库,代表一组文档数据的集合。
文档是 Elasticsearch 存储的基本单位,通常以 JSON 格式存储。每个文档可以包含多个字段,字段类型包括数值类型、日期类型、布尔类型、Text(支持全文搜索)、Keyword(精确匹配)、Geo(地理信息)。
Mapping 定义了索引中文档的结构和字段类型。Elasticsearch 会根据文档数据自动推断映射规则,但在实际应用中,建议手动定义映射规则以确保字段类型准确。
Elasticsearch 的查询语法基于 RESTful API,主要包括以下参数:
GET /{index}/_search{ "size": 10, "from": 0, "_source": ["field1", "field2"], "query": { "match": { "field1": "text" } }}
GET /{index}/_search{ "query": { "term": { "field1": "value1" } }}
GET /{index}/_search{ "query": { "terms": { "field1": ["value1", "value2"] } }}
GET /{index}/_search{ "query": { "range": { "field1": { "gte": 100, "lte": 200 } } }}
GET /{index}/_search{ "query": { "bool": { "must": ["term1", "term2"], "should": ["term3"] } }}
Elasticsearch 支持根据查询结果的指定字段排序:
GET /{index}/_search{ "sort": [ {"field1": "asc"}, {"field2": "desc"} ]}
Elasticsearch 的聚合查询类似于 SQL 的 GROUP BY 和聚合函数,常用于统计分析:
GET /{index}/_search{ "size": 0, "aggs": { "type_count": { "terms": { "field": "type" } } }}
常用的聚合函数包括 value_count(统计文档总数)、cardinality(去重统计)、avg(求平均值)、sum(求和)、max(求最大值)、min(求最小值)等。
Elasticsearch 是一个强大且灵活的搜索和数据分析引擎,适用于处理海量数据的高性能需求。通过简单的 HTTP 接口和丰富的功能,Elasticsearch 减少了对技术细节的依赖,使开发者能够快速上手并实现高效的数据处理任务。
转载地址:http://awln.baihongyu.com/