Elasticsearch 基本概念- Index

2023-05-08 10:17:38 浏览数 (1)

Elasticsearch是一个基于Lucene的全文搜索引擎,它具有分布式、高可用、实时的特性。在Elasticsearch中,Index是一个基本概念,它是一个包含文档的逻辑数据集合。

Index的基本概念

Index是Elasticsearch中最基本的概念之一,可以看做是一个数据库中的表。每个Index由一组文档组成,每个文档都有一个唯一的ID。Index中的文档可以被搜索、聚合、过滤和排序。

在Elasticsearch中,Index是不可变的,即一旦创建就不能更改。当需要修改文档时,会创建一个新的版本,并将旧版本标记为已删除。这样做可以确保文档的可追溯性和一致性。

创建Index

创建Index需要使用PUT API,具体语法如下:

代码语言:javascript复制
PUT /<index>

其中,<index>是Index的名称。

以下是创建名为my_index的Index的示例:

代码语言:javascript复制
PUT /my_index

可以通过GET API来验证Index是否创建成功:

代码语言:javascript复制
GET /my_index

如果Index已经存在,则会返回Index的元数据,否则会返回404状态码。

添加文档

添加文档需要使用Index API,具体语法如下:

代码语言:javascript复制
POST /<index>/_doc
{
  "field1": "value1",
  "field2": "value2",
  ...
}

其中,<index>是Index的名称。文档的内容以JSON格式表示,可以包含多个字段。每个字段都有一个名称和一个值。

以下是添加一个名为my_doc的文档到my_index的示例:

代码语言:javascript复制
POST /my_index/_doc
{
  "title": "Elasticsearch基本概念",
  "content": "Elasticsearch是一个基于Lucene的全文搜索引擎,它具有分布式、高可用、实时的特性。",
  "author": "张三",
  "publish_time": "2022-05-08"
}

在添加文档时,Elasticsearch会自动为文档生成一个唯一的ID。可以通过GET API来查看文档的内容:

代码语言:javascript复制
GET /my_index/_doc/<id>

其中,<id>是文档的ID。

查询文档

查询文档需要使用Search API,具体语法如下:

代码语言:javascript复制
POST /<index>/_search
{
  "query": {
    ...
  },
  "sort": [
    ...
  ],
  "size": ...,
  "from": ...
}

其中,<index>是Index的名称。query字段指定了查询条件,sort字段指定了排序规则,size字段指定了返回结果的文档数目,from字段指定了返回结果的起始位置。

以下是查询my_index中所有文档的示例:

代码语言:javascript复制
POST /my_index/_search
{
  "query": {
    "match_all": {}
  },
  "sort": [
    {"publish_time": "desc"}
  ],
  "size": 10,
  "from": 0
}

这个查询会返回my_index中所有文档,按照publish_time字段倒序排序,返回10个文档,从第一个文档开始。

0 人点赞