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个文档,从第一个文档开始。