Elasticsearch语法和基础入门

Elasticsearch是一个基于Lucene的开源搜索引擎,它提供了一个分布式、多租户能力的全文搜索引擎,带有一个HTTP Web界面和基于JSON的文档。在本文中,我们将介绍Elasticsearch的基础知识和基本语法,帮助初学者快速入门。

一、Elasticsearch核心概念

  1. 索引(Index):Elasticsearch中的索引类似于关系型数据库中的数据库。它是存储和检索文档的地方。一个Elasticsearch集群中可以包含多个索引。
  2. 类型(Type):在Elasticsearch 7.x版本之前,每个索引中可以定义多个类型,但在7.x及以后的版本中,每个索引只能有一个类型。类型可以看作是索引中的一个逻辑分区。
  3. 文档(Document):文档是Elasticsearch中的基本数据单元,它是以JSON格式存储的。每个文档都是一个独立的对象,包含了一系列的字段和对应的值。
  4. 字段(Field):字段是文档中的属性,例如,一个文档可能包含“标题”、“内容”、“日期”等字段。
  5. 映射(Mapping):映射定义了索引中每个字段的类型、属性和其他设置。它类似于关系型数据库中的表结构定义。

二、Elasticsearch基本语法

  1. 创建索引

使用PUT请求创建一个新的索引。例如,创建一个名为“my_index”的索引:

PUT /my_index
  1. 添加文档

使用POST请求向索引中添加文档。例如,向“my_index”索引中添加一个文档:

POST /my_index/_doc/
{
  "title""Elasticsearch入门",
  "content""Elasticsearch是一个强大的搜索引擎。",
  "date""2023-07-19"
}
  1. 查询文档

使用GET请求查询文档。例如,查询“my_index”索引中的所有文档:

GET /my_index/_search
{
  "query": { "match_all": {} }
}
  1. 更新文档

使用POST请求更新文档。你需要提供文档的ID和需要更新的字段。例如,更新“my_index”索引中ID为1的文档的“title”字段:

POST /my_index/_doc/1/_update
{
  "doc": { "title""Elasticsearch基础教程" }
}
  1. 删除文档

使用DELETE请求删除文档。你需要提供文档的ID来删除特定的文档。例如,删除“my_index”索引中ID为1的文档:

DELETE /my_index/_doc/1
  1. 删除索引

使用DELETE请求删除整个索引。例如,删除“my_index”索引:

DELETE /my_index

三、Elasticsearch查询语法

Elasticsearch提供了丰富的查询语法,用于从索引中检索文档。以下是一些常用的查询示例:

  1. 匹配查询

匹配查询用于在文本字段中搜索特定的文本。例如,搜索“content”字段中包含“搜索引擎”的文档:

GET /my_index/_search
{
  "query": { "match": { "content""搜索引擎" } }
}
  1. 短语查询

短语查询用于搜索包含特定短语的文档。例如,搜索“content”字段中包含“Elasticsearch入门”短语的文档:

GET /my_index/_search
{
  "query": { "match_phrase": { "content""Elasticsearch入门" } }
}
  1. 范围查询

范围查询用于搜索在指定范围内的文档。例如,搜索“date”字段在2023年1月1日至2023年7月1日之间的文档:

GET /my_index/_search
{
  "query": {
    "range": {
      "date": { "gte""2023-01-01""lte""2023-07-01" }
    }
  }
}

这只是Elasticsearch语法和基础的入门介绍。Elasticsearch还有许多高级功能和选项等待你去探索和学习。希望本文能帮助你开始Elasticsearch的学习之旅!


请使用浏览器的分享功能分享到微信等