[Elasticsearch] 索引管理 (一)

来源:互联网 发布:javaweb网站源码 编辑:程序博客网 时间:2024/05/17 23:13

索引管理

本文翻译自Elasticsearch官方指南的索引管理(Index Management)一章

我们已经了解了ES是如何在不需要任何复杂的计划和安装就能让我们很容易地开始开发一个新的应用的。但是,用不了多久你就会想要仔细调整索引和搜索过程来更好的适配你的用例。

几乎所有的定制都和索引(Index)以及其中的类型(Type)相关。本章我们就来讨论用于管理索引和类型映射的API,以及最重要的设置。


创建索引

到现在为止,我们已经通过索引一份文档来完成了新索引的创建。这个索引是使用默认的设置创建的,新的域通过动态映射(Dynamic Mapping)的方式被添加到了类型映射(Type Mapping)中。

现在我们对这个过程拥有更多的控制:我们需要确保索引被创建时拥有合适数量的主分片(Primary Shard),并且在索引任何数据之前,我们需要设置好解析器(Analyzers)以及映射(Mappings)。

因此我们需要手动地去创建索引,将任何需要的设置和类型映射传入到请求正文中,就像下面这样:

PUT /my_index{    "settings": { ... },    "mappings": {        "type_one": { ... },        "type_two": { ... },        ...    }}

事实上,如果你想阻止索引被自动创建,可以通过添加下面的设置到每个节点的config/elasticsearch.yml文件中:

action.auto_create_index: false

将来,我们会讨论如何使用索引模板(Index Template)来预先定义自动生成的索引。这个功能在索引日志数据的时候有用武之地:索引的名字中会包含日期,每天都有一个有着合适配置的索引被自动地生成。


删除索引

使用下面的请求完成索引的删除:

DELETE /my_index

你也可以删除多个索引:

DELETE /index_one,index_twoDELETE /index_*

你甚至还可以删除所有的索引:

DELETE /_all

索引设置

虽然索引的种种行为可以通过索引模块的参考文档介绍的那样进行配置,但是……

TIP

ES中提供了一些很好的默认值,只有当你知道它是干什么的,以及为什么要去修改它的时候再去修改。

两个最重要的设置:

number_of_shards

一个索引中含有的主分片(Primary Shard)的数量,默认值是5。在索引创建后这个值是不能被更改的。

number_of_replicas

每一个主分片关联的副本分片(Replica Shard)的数量,默认值是1。这个设置在任何时候都可以被修改。

比如,我们可以通过下面的请求创建一个小的索引 - 只有一个主分片 - 同时没有副本分片:

PUT /my_temp_index{    "settings": {        "number_of_shards" :   1,        "number_of_replicas" : 0    }}

将来,我们可以动态地通过update-index-settings API完成对副本分片数量的修改:

PUT /my_temp_index/_settings{    "number_of_replicas": 1}

配置解析器

第三个重要的索引设置就是解析(Analysis),可以利用已经存在的解析器(Analyzer)进行配置,或者是为你的索引定制新的解析器。

在解析和解析器中,我们介绍了一些内置的解析器,它们用来将全文字符串转换成适合搜索的倒排索引(Inverted Index)。

对于全文字符串字段默认使用的是standard解析器,它对于多数西方语言而言是一个不错的选择。它包括:

  • standard分词器。它根据词语的边界进行分词。
  • standard token过滤器。用来整理上一步分词器得到的tokens,但是目前是一个空操作(no-op)。
  • lowercase token过滤器。将所有tokens转换为小写。
  • stop token过滤器。移除所有的stopwords,比如a,the,and,is等

默认下stopwords过滤器没有被使用。可以通过创建一个基于standard解析器的解析器并设置stopwords参数来启用。要么提供一个stopwords的列表或者告诉它使用针对某种语言预先定义的stopwords列表。

在下面的例子中,我们创建了一个名为es_std的解析器,它使用了预先定义的西班牙语中的stopwords列表:

PUT /spanish_docs{    "settings": {        "analysis": {            "analyzer": {                "es_std": {                    "type":      "standard",                    "stopwords": "_spanish_"                }            }        }    }}

es_std解析器不是全局的 - 它只作用于spanish_docs索引。可以通过制定索引名,使用analyze API进行测试:

GET /spanish_docs/_analyze?analyzer=es_std{    El veloz zorro marrón}

下面的部分结果显示了西班牙语中的stopword El已经被正确地移除了:

{  "tokens" : [    { "token" :    "veloz",   "position" : 2 },    { "token" :    "zorro",   "position" : 3 },    { "token" :    "marrón",  "position" : 4 }  ]}

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 asp复选框选中的有重复值怎么办 邮件在邮递中出现损坏怎么办呢? 爱彩彩票资金密码忘记了怎么办 注册彩票网站忘了资金密码怎么办 电车电瓶加水后电压变低怎么办 电动车电瓶四块电池坏了一块怎么办 把小孩的玩具修坏了怎么办 电动车插头太紧了插不到底怎么办 宜家沙发不能更换布套怎么办 苹果官网买的无线充坏了怎么办 苹果官网上买的耳机坏了怎么办 led灯开关关掉了闪烁是怎么办 我朋友借的网贷光给我打电话怎么办 电脑上的文件变成了图片查看怎么办 外卖店打印机纸卡住打不开了怎么办 微信撤回图片留下一堆代码怎么办 拼多多砍价免费拿砍不到0元怎么办 一岁三个月宝宝老足拉肚子怎么办丶 想打好关系送礼发红包不敢收怎么办 我在相亲市场太受欢迎了怎么办小说 有人报警说我诈骗警察说立案怎么办 微信账号长时间未登录不想要怎么办 手机号注销了百度云登录不了怎么办 申请百度云账号的手机不用了怎么办 新注册的微信号显示账号异常怎么办 注册公众号说邮箱被占用了怎么办 向钱贷登录手机号换了怎么办 qq号绑定的手机号码换了怎么办 用手机号注册的支付宝换号了怎么办 支付宝转的账户手机号消号了怎么办 激活微信账号手机号写错了怎么办 大学试卷没有写名字和考号怎么办 公司被注销了公众号还想要怎么办 公司认证的公众号公司注销了怎么办 信而富注册手机号码不用了怎么办 信而富本时段额度已放完怎么办 知道qq号密码账号忘了怎么办 扣扣绑定的手机号被别人用了怎么办 我的手机号被别人绑定了快手怎么办 微信密码忘记了没绑定手机号怎么办 扣扣绑定银行卡忘记密码了怎么办