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

10 months ago

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

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

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

image.png

查询集群健康状态

打开终端,输入命令

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

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

image.png

查看所有索引

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

image.png

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

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

1. 创建索引

请求方法:

  • PUT

请求 URL:

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

请求体(Body):

{}

说明:

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

操作步骤:

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

image.png 如果索引创建成功,你会看到返回类似以下内容:

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

2. 添加文档

请求方法:

  • POST

请求 URL:

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

请求体(Body):

{
  "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 如果文档添加成功,你会看到类似以下的返回:

{
    "_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):

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 返回的结果类似如下:

{
    "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):

{
  "doc": {
    "price": 799.99
  }
}

说明:

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

操作步骤:

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

image.png 如果更新成功,你会看到返回的 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 删除成功后,返回的响应如下:

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

总结

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

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

相关资源 📚

作者
天天