赞
踩
在Elasticsearch中索引有很多的配置参数,有些配置是可以在建好索引后重新进行设置和管理的,比如索引的副本数量、索引的分词等。
索引中包含很多配置参数,可以通过下面命令获取索引的参数配置:
GET http://127.0.0.1:9200/secisland/_settings
获取索引配置参数的请求格式如下:
host:port/(index)/_settings
{index}
为索引名称,可以接收多种参数格式,*
|all
|namel,name2
…
过滤配置参数的返回结果:
GET http://127.0.0.1:9200/secisland/_settings/name=index.number_*
name-index.number*设置将只返回number_of_replicas,number_of_shards两个参数详情。
在REST风格的URL设置中设置/settings(所有索引)
或者{index}/_settings
,可以设置一个或者多个索引,例如:
请求:
PUT http:/127.0.0.l:9200/secisland/_settings
参数:
{
"indexx":{"number_of_replicas":4}
}
更新分词器。创建索引后可以添加新的分析器。添加分析器之前必须先关闭索引,添加之后再打开索引。
POST http://127.0.0.1:9200/secisland/_close
PUT http://127.0.0.1:9200/secisland/_settings
{
"analysis": {
"analyzer": {
"content": {"type":"custom","tokenizer":"whitespace"}
}
}
}
POST http://127.0.0.1:9200/secisland/_open
索引分析(analysis)是这样一个过程:首先,把一个文本块分析成一个个单独的词(term),为了后面的倒排索引做准备。然后标准化这些词为标准形式,提高它们的“可搜索
性”。这些工作是分析器(analyzers)完成的。一个分析器(analyzers)是一个组合,用于将三个功能放到一起:
Elasticsearch提供很多内置的字符过滤器,分词器和标记过滤器。这些可以组合起来创建自定义的分析器以应对不同的需求。
POST http://127.0.0.1:9200/_analyze
{
"analyzer":"standard",
"text":"this is a test"
}
在该分析器下,将会分析成this,is,a,test四个词。
POST http://127.0.0.1:9200/_analyze
{
"tokenizer":"keyword",
"token_filters":["lowercase"],
"char_filters":["html_strip"],
"text":"this is a <b>test</b>"
}
使用keyword分词器、lowercase分词过滤、字符过滤器是html strip,这3部分构成一个分词器。
上面示例返回分词结果是this is a test,其中html_strip过滤掉了html字符。
也可以指定索引进行分词。URL格式如下:
http://127.0.0.1:9200/secisland/_analyze
如果想获取分析器分析的更多细节,设置explain属性为true(默认为false),将输出分词详情。
PUT http://127.0.0.1:9200/_template/template_1
{
"template": "te*",
"settings": {"number_of_shards": 1},
"mappings": {
"type1": {
"_source": {
"enabled": false
}
}
}
}
定义好模板可使用te*
来适配,分片数量为1,默认文档类型为type1
,_source
的enabled为false。
DELETE http://127.0.0.1:9200/_template/template_1
GET http://127.0.0.1:9200/_template/template_1
使用通配符或逗号分隔符:
GET http://127.0.0.1:9200/_template/temp*
GET http://127.0.0.1:9200/_template/template_1,template_2
获取所有索引模板:
GET http://127.0.0.1:9200/_template/
判断索引模板是否存在:
HEAD http://127.0.0.1:9200/_template/template_1
有这样一种情况:template_1、template2两个模板,使用te*会匹配2个模板,最后合并两个模板的配置。如果配置重复,这时应该设置order属性,order是从0开始的数字,先匹配ordr数字小的,再匹配数字大的,如果有相同的属性配置,后匹配的会覆盖之前的配置。
重建索引的最基本功能是拷贝文件从一个索引到另一个索引,例如:
POST /_reindex
{
"source": {"index": "secisland"},
"dest": {"index": "new_secisland"}
}
参数说明:
由于_reindex是获取源索引的快照,而且目标索引是不同的索引,所以基本上不太可能产生冲突。在接口参数中可以增加dest来进行乐观并发控制。如果version_type设置为
internal会导致Elasticsearch盲目转储文件到目标索引,任何具有相同类型和ID的文档将被重写。例如:
POST /_reindex
{
"source": {"index": "secisland"},
"dest": {
"index": "new_secisland",
"version_type": "internal"
}
}
如果设置version_type为external将会导致Elasticsearch保护源索引的版本,如果在目标索引中有一个比源索引旧的版本,则会更新文档。对于源文件中丢失的文档在目标中也会被创建。
POST /_reindex
{
"source": {"index": "secisland"},
"dest": {
"index": "new_secisland",
"version_type": "external"
}
}
设置op_type为create将导致_reindex在目标索引中仅创建丢失的文件。所有现有的文件将导致版本冲突。
POST /_reindex
{
"source": {"index": "secisland"},
"dest": {
"index": "new_secisland",
"op_type": "create"
}
}
正常情况下当发生冲突的时候reindex过程将被终止,可以在请求体中设置"conflicts’":“proceed”,可以只进行计算:
POST /_reindex
{
"source": {"index": "secisland"},
"dest": {"index": "new_secisland"},
"conflicts":"proceed"
}
可以通过向源添加一个类型或者增加一个查询来限制文档的数量,比如只复制类型为secilog,且collect_type字段为syslog的文档:
POST /_reindex
{
"source": {
"index": "secisland",
"type":"secilog",
"query":{
"term": {
"collect_type": {
"value": "syslog"
}
}
}
},
"dest": {"index": "new_secisland"}
}
在请求接口中可以列出源索引和类型,可以在一个接口中复制多个源。例如下面的例子将在secisland和blog索引中的secilog和post类型中拷贝数据,这包括secisland索引中的“secilog”和“post”类型,也包括blog索引中的“secilog”和“post”类型。如果需要更具体的文档可以使用查询。当id产生冲突的时候是没有办法处理的,因为执行的顺序是随机的,所以目标索引将无法确认应该保存哪些文档:
POST /_reindex
{
"source": {
"index": ["secisland", "blog"],
"type": ["secilog", "post"]
},
"dest": {"index": "all_together"}
}
也可以通过设置大小来限制处理文档的数量。这只会复制一个文件到new_secisland索引中:
POST /_reindex
{
"source": {"index": "secisland"},
"dest": {"index": "new_secisland"},
"size": 1
}
如果你想要复制特定的文档,可以使用排序。排序会降低效率,但在某些情况下,它是有意义的。如果可能的话,可以选择性地查询来确定复制的大小和排序。下面将从secisland索引中复制l0000文档到new_secisland中:
POST /_reindex
{
"source": {"index": "secisland", "sort":{"date": "desc"}},
"dest": {"index": "new_secisland"},
"size": 10000
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。