当前位置:   article > 正文

ElasticSearch 实战: ES 索引 API_elastic索引api

elastic索引api

Elasticsearch 提供了丰富的 RESTful API 用于管理和操作索引,包括创建、查询、更新、删除等操作。以下是对 Elasticsearch 索引 API 的实战指南,涵盖了关键操作的示例和说明:

创建索引

创建一个新的索引时,需要指定索引名,并可以提供索引的配置(如分片数、副本数)、映射(字段类型、分析器等)以及其它设置。

请求格式:

PUT /<index_name>
{
  "settings": {
    "number_of_shards": <shard_count>,
    "number_of_replicas": <replica_count>,
    ...其它设置...
  },
  "mappings": {
    "<doc_type>" : {
      "properties": {
        "<field_name>": {
          "type": "<field_type>",
          ...其它字段属性...
        },
        ...其它字段...
      }
    }
  },
  ...可能包含的其它部分(如 aliases、warmers)...
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • <index_name>:要创建的索引名称。
  • settings:索引级别的配置,如分片数(number_of_shards)、副本数(number_of_replicas)等。
  • mappings:定义索引中文档类型(doc_type)及其字段(field_name)的数据类型(field_type)和分析器等属性。从 Elasticsearch 7.x 版本开始,单个索引内不再支持多个文档类型,所以通常只定义一个默认类型(可以省略类型名)。
  • <shard_count><replica_count>:分别表示主分片数量和副本分片数量,根据集群规模和数据分布需求设置。

示例:

PUT /my_index
{
  "settings": {
    "number_of_shards": 3,
    "number_of_replicas": 2
  },
  "mappings": {
    "properties": {
      "title": {
        "type": "text"
      },
      "content": {
        "type": "text",
        "analyzer": "english"
      },
      "published_date": {
        "type": "date"
      }
    }
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

查看索引信息

获取指定索引的基本信息,包括设置、映射、状态等。

请求格式:

GET /<index_name>
  • 1

示例:

GET /my_index
  • 1

更新索引设置

修改已存在索引的部分或全部设置。

请求格式:

PUT /<index_name>/_settings
{
  "<setting_key>": "<new_value>",
  ...其它设置项...
}
  • 1
  • 2
  • 3
  • 4
  • 5

示例:更改副本数:

PUT /my_index/_settings
{
  "number_of_replicas": 1
}
  • 1
  • 2
  • 3
  • 4

删除索引

删除指定的索引及其所有数据。

请求格式:

DELETE /<index_name>
  • 1

示例:

DELETE /my_index
  • 1

索引模板

除了直接操作单个索引,Elasticsearch 还支持创建索引模板,用于自动应用预定义的设置和映射到符合特定模式的新建索引上。

创建模板:

PUT _template/<template_name>
{
  "index_patterns": ["<pattern>"],
  "settings": { ... },
  "mappings": { ... },
  ...其它部分...
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

示例:

PUT _template/my_template
{
  "index_patterns": ["logs-*"],
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 0
  },
  "mappings": {
    "properties": {
      "@timestamp": {
        "type": "date"
      },
      "message": {
        "type": "text"
      }
    }
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

使用 Java Client 创建索引

对于 Java 开发者,可以利用官方提供的 Java High Level REST Client 或者更现代的 Java Low Level REST Client 来创建索引。以下是一个使用 High Level REST Client 的简例:

import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.client.indices.CreateIndexRequest;
import org.elasticsearch.client.indices.CreateIndexResponse;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentFactory;

public class CreateIndexExample {

    public static void main(String[] args) throws Exception {
        RestHighLevelClient client = // 初始化客户端实例...

        XContentBuilder mappingBuilder = XContentFactory.jsonBuilder()
                .startObject()
                    .startObject("properties")
                        .startObject("title")
                            .field("type", "text")
                        .endObject()
                        .startObject("content")
                            .field("type", "text")
                            .field("analyzer", "english")
                        .endObject()
                        .startObject("published_date")
                            .field("type", "date")
                        .endObject()
                    .endObject()
                .endObject();

        CreateIndexRequest request = new CreateIndexRequest("my_index");
        request.settings(Settings.builder()
                .put("number_of_shards", 3)
                .put("number_of_replicas", 2));
        request.mapping(mappingBuilder);

        CreateIndexResponse response = client.indices().create(request, RequestOptions.DEFAULT);

        System.out.println("Index created: " + response.isAcknowledged());
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40

以上实战指南覆盖了 ElasticSearch 索引 API 的核心操作,包括使用 HTTP 请求直接操作和通过 Java 客户端编程接口进行索引管理。实际使用中,应结合具体业务需求和 Elasticsearch 版本特性进行相应的调整。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/981275
推荐阅读
相关标签
  

闽ICP备14008679号