美文网首页
Elasticsearch的索引管理

Elasticsearch的索引管理

作者: 代码的搬运工 | 来源:发表于2019-12-18 19:53 被阅读0次

    1、创建索引

    创建索引的时候可以通过修改number_of_shards和number_of_replicas参数的数量来修改分片和副本的数量。在默认的情况下分片的数量是5个,副本的数量是1个。

    例如,创建三个主分片,两个副本分片的索引。

    请求:PUT http://127.0.0.1:9200/secisland

    参数:{"settings": {"index": {"number_of_shards": 3, "number_of_replicas": 2}}}

    参数可以简写成:{"settings": {"number_of_shards": 3, "number_of_replicas": 2}}

    返回值:{"acknowledged": true}

    后面可以通过update-index-settings API完成对副本数量的修改。例如:

    请求:PUT http://127.0.0.1:9200/secisland/_settings

    参数:{"number_of_replicas": 1}

    这样就把副本的数量改成1个副本。

    对于任何Elasticsearch文档而言,一个文档会包括一个或多个字段,任何字段都要有自己的数据类型,例如:string、integer、date等。Elasticsearch中是通过映射来进行字段和数据类型对应的。在默认的情况下Elasticsearch会自动识别字段的数据类型。同时Elasticsearch提供了mappings参数可以显示地进行映射。

    我们看一下在Lucene中是如何看待文档的。在Lucene中的文档包含的是一个简单field-value对的列表。一个字段至少要有一个值,但是任何字段都可以拥有多个值。类似地,一个字符串值也可以通过解析阶段而被转换为多个值。Lucene不管值是字符串类型,还是数值类型或者其他类型,所有的值都会被同等地看做一些不透明的字节(Opaque bytes)。当我们使用Lucene对文档进行索引时,每个字段的值都会被添加到倒排索引(Inverted Index)的对应字段中。也可以选择原始值是否会不修改地被保存到索引中,以此来方便将来获取。

    创建自定义字段类型的例子如下:

    请求:PUT http://127.0.0.1:9200/secisland

    参数:{"settings": {"number_of_shards": 3, "number_of_replicas": 2}, "mappings": {"secilog": {"properties": {"logType": {"type": "string", "index": "not_analyzed"}}}}}

    在这个例子中,我们创建了一个名为secilog的类型,类型中有一个字段,字段的名称是logType,字段的数据类型是string,而且这个字段是不进行分析的。

    2、删除索引

    请求:DELETE http://127.0.0.1:9200/secisland

    上面的时候删除了名为secisland的索引。删除索引需要指定索引名称,别名或者通配符。

    删除索引可以使用逗号分隔符,或者使用_all或“*”号删除全部索引。

    为了防止误删除,可以设置elasticsearch.yml属性action.destructive_requires_name为true,禁止使用通配符或_all删除索引,必须使用名称或别名才能删除该索引。

    3、获取索引

    获取索引接口允许供一个或多个索引中获取信息。

    请求:GET http://127.0.0.1:9200/secisland

    通过这个请求会把系统中的信息都显示出来,包括默认的一些配置,例如上面的返回值为:

    {"secisland": {"aliases": {}, "mappings": {"secilog": {"properties": {"logType": {"type": "string", "index": "not_analyzed"}}}, "settings": {"index": {"creation_date": "1459652280258", "uuid": "2EsTzGu-QuCh7ddPGZ9gUA",  "number_of_replicas": "2", "number_of_shards": "3", "version": {"created": "2020099"}}}, "warmers": {}}}

    上面的示例获取名为secisland的索引。获取索引需要指定索引名称,别名或者通配符。

    获取索引可使用通配符获取多个索引,或者使用_all或“*”号获取全部索引。

    返回结果过滤:可以已定义返回结果的属性。

    请求:GET http://127.0.0.1:9200/secisland/_settings,_mappings

    上面示例只返回secisland索引的settings和mappings属性。可配置的属性包括_settings、_mappings、_warmers和_aliases。

    如果索引不存在,系统会返回一个错误内容,例如:

    请求:GET http://127.0.0.1:9200/secilog

    返回值:{"error": {"root_cause": [{"type": "index_not_found_exception", "reason": "no such index", "index": "secilog", "resource.type": "index_or_alias", "resource.id": "secilog"}], "type": "index_not_found_exception", "reason": "no such index", "index": "secilog", "resource.type": "index_or_alias", "resource.id": "secilog"}, "status": 404}

    4、打开/关闭索引

    打开/关闭索引接口允许关闭一个打开的索引或者打开一个已经关闭的索引。关闭的索引只能显示索引元数据信息,不能够进行读写操作。

    打开/关闭索引的方式是/{索引名}/_close或者/{索引名}/_open。完整示例如下:

    请求:POST http://127.0.0.1:9200/secisland/_close

    请求:POST http://127.0.0.1:9200/secisland/_open

    可以同时打开或关闭多个索引。如果指向不存在的索引会抛出错误。可以使用配置ignore_unavailable=true,不显示异常。

    全部索引可以使用_all打开或关闭,或者使用通配符表示全部(比如“*”)。

    设置config/elasticsearch.yml属性action.destructive_requires_name为true,禁止使用通配符或者_all标识索引。

    因为关闭的索引会继续占用磁盘空间而不能使用,所以关闭索引接口可能造成磁盘空间的浪费。

    禁止使用关闭索引功能,可以设置settingscluster.indices.close.enable为false,默认是true。

    相关文章

      网友评论

          本文标题:Elasticsearch的索引管理

          本文链接:https://www.haomeiwen.com/subject/qohunctx.html