Elasticsearch索引的基本操作(6)-索引设置

1、索引设置的查看

查看索引的设置通过_settings API,使用GET方法操作。

1.1、查看单个索引的设置

查看索引new_index的设置,操作如下:

GET /new_index/_settings

响应如下:

{

  "new_index" : {

    "settings" : {

      "index" : {

        "creation_date" : "1556890383056",

        "number_of_shards" : "1",

        "number_of_replicas" : "1",

        "uuid" : "zzlhCATaSimuyTHerRKjqA",

        "version" : {

          "created" : "7000099"

        },

        "provided_name" : "new_index"

      }

    }

  }

}

响应的信息包括了索引的创建日期、主分片数和副本数、uuid等信息。

1.2、查看多个索引的信息

多个索引的信息,可以通过英文逗号“,”指定多个索引名称,也可以指定通配符匹配多个索引,操作如下:

GET /new_index,new_index_2/_settings

#或

GET /new_index*/_settings

如果响应中包含多个索引的设置信息,则对应的配置会归属于对应的索引下,如下所示:

{

  "new_index" : {

"settings" : {

...

    }

  },

  "new_index_2" : {

    "settings" : {

      ...

    }

  },

  ...

}

 

1.3、​​​​​​​查看指定配置项的信息

有时查看全部的配置,返回的内容太多了,此时可以通过在参数中指定要查看的配置项,如只查看主分片的数量设置,操作如下:

GET /new_index/_settings/index.number_of_shards

则只会返回当前索引的主分片数量,如下所示:

{

  "new_index" : {

    "settings" : {

      "index" : {

        "number_of_shards" : "1"

      }

    }

  }

}

​​​​​​​2、索引设置的修改

Elasticsearch中有一些参数是可以在运行时调整,被称为动态参数,动态参数可以通过_settings API进行修改,操作时使用PUT方法,可以一次修改一个或者多个动态参数的值,设置完成后对应的配置会立即生效。

​​​​​​​2.1、修改示例

修改索引副本

在有些操作场景中,需要写入大量的数据,在此期间不需要或者很少对外提供搜索服务,可以考虑将其副本数设置为0,以增加索引的速度,待数据索引完成后,再设置索引的副本数据。

以下操作示例将索引new_index的副本数设置为0,操作如下:

PUT /new_index/_settings

{

    "index" : {

        "number_of_replicas" : 0

    }

}

修改完成后,将会删除所有副本,后面设置为大于0的值时,副本会自动平衡分配。

修改刷新操作频率

刷新(refresh)操作是将index-buffer中解析完成的数据段(segment)写到文件系统缓存中的操作(其默认操作的频率是间隔1秒钟),以确保没有写入磁盘的数据也可以被搜索到,这个确保了Elasticsearch的准实时性,也确保了Elasticsearch的搜索性能。

但是有时需要大批量的写入数据,且这些数据不需要立即就被搜索到,如果此时还是默认的1秒钟的刷新频率,将会对索引的写入产生一定的影响,此时也可以修改刷新频率,让其在大批量数据写入期间,不执行刷新频率,执行完后再调整回来。

将刷新频率设置为-1,则表示禁用刷新操作,操作如下:

PUT /new_index/_settings

{

    "index" : {

        "refresh_interval" : -1

    }

}

 

以上两个值的修改,如果在满足合适的应用场景之上使用,都可以提升索引的速度。

​​​​​​​2.2、常用的索引动态配置参数

参数名

说明

index.number_of_replicas

每个主分片的副本数,默认为1。

index.auto_expand_replicas

该配置项用于控制集群中副本的数量是否随集群中数据节点的数量进行扩展,默认值为false表示副本数不随数据节点扩展。如果希望扩展,可以将值设置为一个数值范围,如“0-3”表示集群中单个主分片的副本数在0个3个之间,具体情况根据集群中数据节点而定,也可以设置为“0-all”,all表示集群中所有的数据集点的数量。

注:

自动扩展的副本数不会考虑到其它对副本分配可能存在的限制规则,如对分片的识别、过滤或每个节点上总分片的限制,如果适用的规则阻止所有副本的分配置,这可能导致群集运行状况变为黄色。

index.search.idle.after

设置分片多久没有接收过请求,就会被判定为空闲的时间,默认为30秒。

index.refresh_interval

执行刷新操作的频率,该操作使索引的最近更改对搜索可见, 默认为1秒, 可以设置为-1表示禁用刷新。

如果显示不设置该值,那些在至少${index.search.idle.after}秒之前没有收到过搜索请求的分片,将不会收到后台的刷新请求,一直要等这些分片收到搜索才会收到后台的刷新请求,如果当前搜索涉及到操作空闲状态的分片时,刷新操作会被挂起直到下一次后台的刷新操作(1秒之内),此行为旨在在未执行搜索时自动优化默认情况下的批量索引。

如果不希望执行此默认逻辑,应当显示的将刷新时间间隔设置为1秒。

index.max_result_window

对当前索引在被执行搜索时,限制此索引的from + size的最大值,以避免占用过大的堆内存, 默认为10000。

index.max_inner_result_window

用于控制顶部聚合from+size的总记录,以避免占用过大的堆内存, 默认为100。

index.max_rescore_window

设置索引的rescore请求的window_size的最大值, 默认为与index.max_result_window的值相同,默认值为10000。

index.max_docvalue_fields_search

查询中允许的最多docvalue_fields数量,默认为100。Doc_value字段的查询成本很高,因为它们可能会导致对每个字段和每个文档执行搜索。

index.max_script_fields

查询中允许的最多script_fields的数量, 默认为32。

index.max_ngram_diff

NGramTokenizer和NGramTokenFilter的min_gram和max_gram之间允许的最大差异值,默认为1。

index.max_shingle_diff

ShingleTokenFilter的max_shingle_size和min_shingle_size之间允许的最大差异值, 默认为3。

index.blocks.read_only

控制索引及其元数据是否为只读状态,设置为true表示只读,false为非只读。

index.blocks.read_only_allow_delete

控制索引及其元数据在只读状态下,是否允许执行删除,设置true表示允许删除,false不允许。

index.blocks.read

设置是否允许当前索引可读,true表示不可读。

index.blocks.write

设置是否允许当前索引可写,true表示不可写。与只读read_only不同的是,它不影响到对元数据的操作。例如可以关闭一个blocks.write的索引,但是不可以关闭一个read_only状态的索引。

index.blocks.metadata

控制对metadata的读写,true表示不允许读写。

index.max_refresh_listeners

索引的每个分片上可用的最大刷新侦听器数,这些侦听器用于实现refresh = wait_for的请求。

index.analyze.max_token_count

使用_analyze API可以生成的最大词项数, 默认为10000。

index.highlight.max_analyzed_offset

highlight请求可被分析的最大字符数,此设置仅在highlight请求针对没有偏移量或term vector的索引文本时才会生效, 默认为1000000。

index.max_terms_count

可在term查询中使用的最大term数,默认值为65536。

index.max_regex_length

可以在正则表达式查询中使用的正则表达式的最大长度, 默认为1000。

index.routing.allocation.enable

控制当前索引的分片分配,其值可以设置为:

  1. all(默认值) - 允许所有分片执行分片分配;
  1. primaries  - 仅允许为主分片分配分片;
  1. new_primaries  - 仅允许为新创建的主分片分配分片;
  1. none  - 不允许执行分片分配;

index.routing.rebalance.enable

设置索引的分片重新平衡策略,其值可以设置为:

  1. all(默认值) - 允许所有的分片重新平衡;
  2. primaries  - 仅允许主分片重新平衡;
  3. replicas  - 仅允许对副本分片进行重新平衡;
  4. none  - 不允许进行分片重新平衡;

index.gc_deletes

设置已删除文档的版本号仍可用于后续版本化操作的时间, 默认为60秒。

index.default_pipeline

设置此索引的默认接收节点管道(The default ingest node pipeline),如果设置了默认管道但管道不存在,此索引请求将失败。可以使用pipeline参数覆盖默认值,名为“_none”的特殊pipeline不执行摄取管道。

常用配置参看:

https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules.html

2.3、恢复索引项的默认配置

在Elasticsearch中,基本上所有的参数都有默认值,如果由于某种原因需要恢复指定参数为原来的默认值,如将number_of_replicas的值恢复为默认值,则只需要将对应参数的值设置为null即可,操作如下:

PUT /new_index/_settings

{

    "index" : {

        "number_of_replicas" : null

    }

}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值