From 73eab827a9bef4b1eaccd9c89111d82c22acee5f Mon Sep 17 00:00:00 2001 From: asahi Date: Thu, 17 Oct 2024 21:04:25 +0800 Subject: [PATCH] =?UTF-8?q?=E9=98=85=E8=AF=BBes=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- elastic search/elastic search.md | 66 ++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/elastic search/elastic search.md b/elastic search/elastic search.md index b54d451..261dba2 100644 --- a/elastic search/elastic search.md +++ b/elastic search/elastic search.md @@ -105,6 +105,72 @@ query DSL支持如下查询: - 向量查询 - 地理位置查询 +##### Query DSL分析 +如果要通过Query DSL对elastic search数据进行分析,那么Aggregations是主要的工具。 + +Aggregations允许根据数据构建复杂的数据摘要,并获取指标、模式和趋势。 + +aggregations利用了和查询相同的数据结构,故而聚合的速度十分快,可以实时的对数据进行分析和可视化。 + +在使用ES时,可以在同一时刻对相同的数据同时进行文档查询、结果过滤、数据分析操作,聚合是在查询请求的上下文中进行计算的。 + +ES支持如下类型的Aggregations: +- Metric:计算metrics,例如field的总和或平均 +- Bucket:基于field value、范围或其他指标对文档进行分组 +- Pipeline:在其他聚合操作结果集的基础上执行聚合操作 + +##### ES | QL +Elasticsearch Query Language是一个piped query language,用于对数据进行过滤、transforming、分析。ES|QL基于新的计算引擎,查询、聚合、transformation方法是直接在Elasticsearch中执行的。在Kibana工具中可以使用ES|QL语法。 + +ES|QL支持Query DSL中的部分特性,例如聚合、过滤、transformation + +## 使用ElasticSearch Api索引和查询数据 +### 创建索引 +可以通过如下方式来创建一个名为`books`的索引: +``` +PUT /books +``` +返回相应结构如下,代表索引创建成功: +```json +{ + "acknowledged": true, + "shards_acknowledged": true, + "index": "books" +} +``` + +### 向索引中添加数据 +可以向ElasticSearch中添加json形式的数据,json格式数据被称为document。ElasticSearch将添加的数据保存到可搜索的索引中。 + +#### 向索引中添加单个document +``` +POST books/_doc +{ + "name": "Snow Crash", + "author": "Neal Stephenson", + "release_date": "1992-06-01", + "page_count": 470 +} +``` + +该请求的返回体中包含ElasticSearch为该document生成的元数据,包含索引范围内唯一的`_id`,在索引范围内唯一标识该document。 + +```json +{ + "_index": "books", + "_id": "O0lG2IsBaSa7VYx_rEia", + "_version": 1, + "result": "created", + "_shards": { + "total": 2, + "successful": 2, + "failed": 0 + }, + "_seq_no": 0, + "_primary_term": 1 +} +``` +