Elasticsearch 是一个基于 Lucene 构建的搜索引擎,它可以快速地存储、搜索和分析大量数据。在本文中,我们将详细介绍 Elasticsearch 的常用接口方法,并通过实战案例来加深理解。

1. Elasticsearch 基础概念

在深入接口方法之前,我们先来了解一下 Elasticsearch 的基础概念。

1.1 索引(Index)

索引是 Elasticsearch 中存储数据的地方,相当于数据库中的表。每个索引包含多个文档(Document),文档是数据的实际存储单位。

1.2 文档(Document)

文档是结构化数据,通常由多个字段组成。每个字段可以存储不同类型的数据,如字符串、数字、布尔值等。

1.3 映射(Mapping)

映射定义了索引中字段的类型和属性。它类似于数据库中的表结构。

2. 常用接口方法详解

2.1 索引操作

2.1.1 创建索引

PUT /my_index
{
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 0
  },
  "mappings": {
    "properties": {
      "title": {
        "type": "text"
      },
      "content": {
        "type": "text"
      }
    }
  }
}

2.1.2 查询索引

GET /my_index

2.1.3 删除索引

DELETE /my_index

2.2 文档操作

2.2.1 创建文档

POST /my_index/_doc/1
{
  "title": "Elasticsearch 入门",
  "content": "本文介绍了 Elasticsearch 的基本概念和常用接口方法。"
}

2.2.2 查询文档

GET /my_index/_doc/1

2.2.3 更新文档

POST /my_index/_update/1
{
  "script": {
    "source": "ctx._source.title = params.new_title",
    "params": {
      "new_title": "Elasticsearch 入门与实战"
    }
  }
}

2.2.4 删除文档

DELETE /my_index/_doc/1

2.3 搜索操作

2.3.1 简单查询

GET /my_index/_search
{
  "query": {
    "match": {
      "title": "Elasticsearch"
    }
  }
}

2.3.2 高级查询

GET /my_index/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "title": "Elasticsearch"
          }
        },
        {
          "range": {
            "content": {
              "gte": "Elasticsearch 入门",
              "lte": "Elasticsearch 实战"
            }
          }
        }
      ]
    }
  }
}

3. 实战案例

以下是一个简单的实战案例,我们将使用 Elasticsearch 搜索包含特定关键词的文档。

3.1 创建索引和文档

PUT /my_index
{
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 0
  },
  "mappings": {
    "properties": {
      "title": {
        "type": "text"
      },
      "content": {
        "type": "text"
      }
    }
  }
}

POST /my_index/_doc/1
{
  "title": "Elasticsearch 入门",
  "content": "本文介绍了 Elasticsearch 的基本概念和常用接口方法。"
}

POST /my_index/_doc/2
{
  "title": "Elasticsearch 高级教程",
  "content": "本文介绍了 Elasticsearch 的高级功能和实战案例。"
}

3.2 搜索文档

GET /my_index/_search
{
  "query": {
    "match": {
      "title": "Elasticsearch"
    }
  }
}

以上命令将返回索引 my_index 中包含关键词 “Elasticsearch” 的文档。

4. 总结

本文介绍了 Elasticsearch 的常用接口方法,并通过实战案例加深了理解。希望读者能够通过本文掌握 Elasticsearch 的基本操作,为后续的学习和应用打下基础。