Elasticsearch 快速上手:让搜索变得简单有趣

天天

发布于265天前
龙猫也是猫
## Elasticsearch 到底是啥?

简单来说,Elasticsearch(简称 ES)就是一个**超级强大的搜索引擎**。想象一下,你有几百万条数据,如果用传统数据库一条条找,可能要找到天荒地老。但用 ES,几毫秒就能搞定!

它就像是给你的数据装了个 Google 搜索引擎,不管是商品、日志、文章,还是用户信息,都能秒速查找。

### 谁在用它?

- **维基百科**:全球最大的百科全书,搜索功能全靠它
- **GitHub**:代码搜索就是用的 ES
- **Stack Overflow**:程序员的救命稻草,问题搜索也是它
- **京东、淘宝**:商品搜索背后的技术支撑
- **滴滴、美团**:位置搜索、商家搜索都有它的身影


https://appstore.lazycat.cloud/#/shop/detail/xu.deploy.elasticsearch


## 如何使用?

截止到目前(2025 年 9 月 11 日 08:51:18),商店中的版本是一个单节点的服务,还没有集成看板功能,所以应用打开后,是这个页面:

![image.png](https://dl.playground.lazycat.cloud/guidelines/496/6b196968-1b3a-4d84-b6ae-45622094ba5e.png "image.png")

上面是 Elasticsearch 服务启动后的欢迎页面,显示了当前节点和集群的状态、版本号(如 9.0.0)、集群名称(如 docker-cluster)等。这说明你的 Elasticsearch 实例已经运行,可以通过 API 进行数据操作和检索。

通过懒猫应用查看器,发现目前的验证是关闭的,不需要密码就能访问服务

![image.png](https://dl.playground.lazycat.cloud/guidelines/496/39dbeedc-f43d-4315-a2db-988aaf428e8d.png "image.png")

### 查询集群健康状态
打开终端,输入命令

`curl -X GET "https://elasticsearch.你的懒猫.heiyu.space/_cat/health?v"`

如果成功,你将看到类似如下的返回结果,显示集群的状态、节点数量等信息:

![image.png](https://dl.playground.lazycat.cloud/guidelines/496/1df9762f-1be3-464f-a8f4-97b64db68be2.png "image.png")

### 查看所有索引

查看当前集群中所有的索引:
`curl -X GET "https://elasticsearch.lanmao168.heiyu.space/_cat/indices?v"
`

![image.png](https://dl.playground.lazycat.cloud/guidelines/496/7168ceb1-e81e-4eaf-ae4a-03076a217e2d.png "image.png")

这将列出所有的索引,包括它们的名称、状态等信息。我目前还没有数据,所以都是空的。

用命令行看起来有点费劲,下面我用 postman 演示功能。注意lanmao168 是我的微服,需要你改成自己的。


## 1. 创建索引

### 请求方法:

* **PUT**

### 请求 URL:

```
https://elasticsearch.lanmao168.heiyu.space/products
```

### 请求体(Body):

```json
{}
```

### 说明:

* 这里我们使用 `PUT` 请求创建一个名为 `products` 的索引。
* 请求体为空 `{}` 即可创建索引。

### 操作步骤:

1. 打开 Postman,选择 `PUT` 方法。
2. 在 URL 栏中输入 `https://elasticsearch.lanmao168.heiyu.space/products`。
3. 选择 `Body`,并选择 `raw` 格式。
4. 在 `raw` 中选择 `JSON` 格式,内容写 `{}`。
5. 点击 `Send` 按钮发送请求。

![image.png](https://dl.playground.lazycat.cloud/guidelines/496/719b02f1-2107-496c-945e-83af85bdc395.png "image.png")
如果索引创建成功,你会看到返回类似以下内容:

```json
{
  "acknowledged": true,
  "shards_acknowledged": true,
  "index": "products"
}
```

---

## 2. 添加文档

### 请求方法:

* **POST**

### 请求 URL:

```
https://elasticsearch.lanmao168.heiyu.space/products/_doc/1
```

### 请求体(Body):

```json
{
  "name": "Smartphone",
  "brand": "BrandX",
  "price": 699.99,
  "category": "Electronics"
}
```

### 说明:

* 这里我们使用 `POST` 请求向 `products` 索引中添加一条文档。
* 文档 ID 是 `1`,内容是关于一款名为 `Smartphone` 的产品。

### 操作步骤:

1. 在 Postman 中,选择 `POST` 方法。
2. 在 URL 栏中输入 `https://elasticsearch.lanmao168.heiyu.space/products/_doc/1`。
3. 选择 `Body`,并选择 `raw` 格式。
4. 在 `raw` 中选择 `JSON` 格式,填入上面的文档内容。
5. 点击 `Send` 按钮发送请求。

![image.png](https://dl.playground.lazycat.cloud/guidelines/496/8c6dcb23-4a57-4a54-87f3-109f44d70b4a.png "image.png")
如果文档添加成功,你会看到类似以下的返回:

```json
{
    "_index": "products",
    "_id": "1\n",
    "_version": 1,
    "result": "created",
    "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 0,
    "_primary_term": 1
}
```

---

## 3. 查询文档

### 请求方法:

* **GET**

### 请求 URL:

```
https://elasticsearch.lanmao168.heiyu.space/products/_search
```

### 请求参数(Params):

```text
q=name:Smartphone
```

### 说明:

* 这里我们使用 `GET` 请求来查询 `products` 索引中所有 `name` 字段为 `Smartphone` 的文档。

### 操作步骤:

1. 在 Postman 中,选择 `GET` 方法。
2. 在 URL 栏中输入 `https://elasticsearch.lanmao168.heiyu.space/products/_search`。
3. 在 `Params` 标签下添加一个参数:

   * **Key**: `q`
   * **Value**: `name:Smartphone`
4. 点击 `Send` 按钮发送请求。

![image.png](https://dl.playground.lazycat.cloud/guidelines/496/c105de69-3a24-4928-b461-ff0f2b6082a0.png "image.png")
返回的结果类似如下:

```json
{
    "took": 283,
    "timed_out": false,
    "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 1,
            "relation": "eq"
        },
        "max_score": 0.2876821,
        "hits": [
            {
                "_index": "products",
                "_id": "1\n",
                "_score": 0.2876821,
                "_source": {
                    "name": "Smartphone",
                    "brand": "BrandX",
                    "price": 699.99,
                    "category": "Electronics"
                }
            }
        ]
    }
}
```

---

## 4. 更新文档

### 请求方法:

* **PUT**

### 请求 URL:

```
https://elasticsearch.lanmao168.heiyu.space/products/_doc/1
```

### 请求体(Body):

```json
{
  "doc": {
    "price": 799.99
  }
}
```

### 说明:

* 这里我们使用 `PUT` 请求来更新文档 ID 为 `1` 的 `price` 字段。

### 操作步骤:

1. 在 Postman 中,选择 `PUT` 方法。
2. 在 URL 栏中输入 `https://elasticsearch.lanmao168.heiyu.space/products/_doc/1/_update`。
3. 选择 `Body`,并选择 `raw` 格式。
4. 在 `raw` 中选择 `JSON` 格式,填入需要更新的数据。
5. 点击 `Send` 按钮发送请求。

![image.png](https://dl.playground.lazycat.cloud/guidelines/496/819c8498-5898-4ef1-83ed-27bd910811cf.png "image.png")
如果更新成功,你会看到返回的 JSON:

```json
{
    "_index": "products",
    "_id": "1",
    "_version": 1,
    "result": "created",
    "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 1,
    "_primary_term": 1
}
```

---

## 5. 删除文档

### 请求方法:

* **DELETE**

### 请求 URL:

```
https://elasticsearch.lanmao168.heiyu.space/products/_doc/1
```

### 说明:

* 使用 `DELETE` 方法删除 `products` 索引中 ID 为 `1` 的文档。

### 操作步骤:

1. 在 Postman 中,选择 `DELETE` 方法。
2. 在 URL 栏中输入 `https://elasticsearch.lanmao168.heiyu.space/products/_doc/1`。
3. 点击 `Send` 按钮发送请求。

![image.png](https://dl.playground.lazycat.cloud/guidelines/496/a3956deb-6adc-4471-ab27-cac182562dba.png "image.png")
删除成功后,返回的响应如下:

```json
{
    "_index": "products",
    "_id": "1",
    "_version": 3,
    "result": "deleted",
    "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 3,
    "_primary_term": 1
}
```

---
   
## 总结

Elasticsearch 不是银弹,但在搜索和日志分析场景下,它确实是个利器。不管你是要做商品搜索、日志分析,还是实时监控,ES 都能帮你轻松搞定。

先用单机版本熟悉功能,有需要再扩展集群,掌握了 ES 的核心概念和使用技巧,你就能在数据的海洋中游刃有余。


## 相关资源 📚

- [Elasticsearch 官方文档](https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html)
- [GitHub 仓库](https://github.com/elastic/elasticsearch)
- [中文社区](https://elasticsearch.cn/)
- [Kibana 在线演示](https://demo.elastic.co/)

评论

0

暂无评论

说点什么呢~
收藏
0
0
0