问题描写叙述

随着应用的不断升级,索引中的类型也会越来越多,新添加的类型中势必会使用到一些自己定义的Analyzer。可是通过_settings端点的更新API不能直接在已经存在的索引上使用。

在sense中进行更新时会抛出异常:

PUT /symbol
{
"settings": {
"analysis": {
"filter": {
"edgengram": {
"type": "edgeNGram",
"min_gram": "1",
"max_gram": "255"
}
},
"analyzer": {
"symbol_analyzer": {
"type": "custom",
"char_filter": [],
"tokenizer": "standard",
"filter": [
"lowercase",
"word_delimiter"
]
},
"back_edge_ngram_analyzer": {
"type": "custom",
"char_filter": [],
"tokenizer": "whitespace",
"filter": [
"reverse",
"edgengram",
"reverse"
]
}
}
}
}
}

上例中,我们希望向名为symbol的索引中加入一个filter和两个analyzers。可是会抛出例如以下的错误信息:

{
"error": "IndexAlreadyExistsException[[symbol] already exists]",
"status": 400
}

提示我们该索引已经存在了,无法加入。


解决方式

最直观的解决方式是首先备份该索引中已经存在的数据。然后删除它再重建该索引。

这样的方式比較暴力,当索引中已经存在相当多的数据时。不建议这样做。

第二种方案是使用_open和_close这一对端点,首先将目标索引关闭,运行须要的更新操作,然后再打开该索引。

POST /symbol/_close

PUT /symbol/_settings
{
"settings": {
....
}
} POST /symbol/_open

这样就避免了须要重建索引的麻烦。

有了新加入的filter和analyzer。就能够依据须要再对types中的mappings进行更新了。

[Elasticsearch] 向已存在的索引中加入自己定义filter/analyzer的更多相关文章

  1. elasticsearch迁移数据到新索引中

    因为业务原因,需要修改索引的映射的某个字段的类型,比如更改Text为Keyword. 需要如下步骤: 1).先新建索引,映射最新的映射实体 2).迁移老索引的数据到新索引中(数据较大的话,可以分批迁移 ...

  2. DirectX:在graph自己主动连线中增加自己定义filter(graph中遍历filter)

    为客户提供的视频播放的filter的測试程序中,採用正向手动连接的方式(http://blog.csdn.net/mao0514/article/details/40535791).因为不同的视频压缩 ...

  3. ElasticSearch权威指南学习(索引管理)

    创建索引 当我们需要确保索引被创建在适当数量的分片上,在索引数据之前设置好分析器和类型映射. 手动创建索引,在请求中加入所有设置和类型映射,如下所示: PUT /my_index { "se ...

  4. elasticsearch——海量文档高性能索引系统

    elasticsearch elasticsearch是一个高性能高扩展性的索引系统,底层基于apache lucene. 可结合kibana工具进行可视化. 概念: index 索引: 类似SQL中 ...

  5. ElasticSearch(六):索引模板

    ElasticSearch(六):索引模板 学习课程链接<Elasticsearch核心技术与实战> Index Template Index Template - 帮助你设定Mappin ...

  6. ElasticSearch 基础入门 and 操作索引 and 操作文档

    基本概念 索引: 类似于MySQL的表.索引的结构为全文搜索作准备,不存储原始的数据. 索引可以做分布式.每一个索引有一个或者多个分片 shard.每一个分片可以有多个副本 replica. 文档: ...

  7. 索引中include的魅力(具有包含性列的索引) (转)

    开文之前首先要讲讲几个概念 [覆盖查询] 当索引包含查询引用的所有列时,它通常称为“覆盖查询”. [索引覆盖] 如果返回的数据列就包含于索引的键值中,或者包含于索引的键值+聚集索引的键值中,那么就不会 ...

  8. SQL Server 索引中include的魅力(具有包含性列的索引)

    2010-01-11 20:44 by 听风吹雨, 22580 阅读, 24 评论, 收藏, 编辑 开文之前首先要讲讲几个概念 [覆盖查询] 当索引包含查询引用的所有列时,它通常称为“覆盖查询”. [ ...

  9. Elasticsearch--Date math在索引中的使用

    在Elasticsearch,有时要通过索引日期来筛选某段时间的数据,这时就要用到ES提供的日期数学表达式 描述: 特别在日志数据中,只是查询一段时间内的日志数据,这时就可以使用日期数学表达式,这样可 ...

随机推荐

  1. 【BIT套主席树】COGS257-动态排名系统

    题意同BZOJ1901,多组数据,数据范围也不一样.重新写一遍复习一下. #include<iostream> #include<cstdio> #include<cst ...

  2. setResult()的调用时机

    今天遇到这样一个问题,我在Activity-A中用startActivityForResult()方法启动了Activity-B,并且在B中通过setResult()方法给A返回值,由于某些原因不能在 ...

  3. hdu 1561 树形dp+分组背包

    题意:就是给定n个点,每个地点有value[i]的宝物,而且有的宝物必须是另一个宝物取了才能取,问取m个点可以获得的最多宝物价值. 一个子节点就可以返回m个状态,每个状态表示容量为j(j<=m) ...

  4. ACM -- 算法小结(十)素数的两种打表法

    素数的两种打表法 下面介绍两种素数打表法,由于是两年前留下的笔记,所以没有原创链接~~ @_@!! 第一种疯狂打表法: #include<stdio.h> #include<math ...

  5. Caused by: java.net.UnknownHostException: localhost.localdomain: localhost.localdomain的问题解决

    在hosts文件增加如下配置即可,下面的方法适合上面提示的错误,无论是Tomcat问题还是MongoDB等等的问题都可以完美解决. vi /etc/hosts 127.0.0.1 localhost ...

  6. HDU 4611 Balls Rearrangement(2013多校2 1001题)

    Balls Rearrangement Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Othe ...

  7. Android SDK最小需求

    As a minimum when setting up the Android SDK, you should download the latest tools and Android platf ...

  8. CC1150 针对低功耗无线应用设计的高度集成多通道射频发送器

    Low Power Sub-1 GHz RF Transmitter 单片低成本低能耗 RF 发送芯片 应用 极低功率 UHF 无线发送器 315/433/868 和 915MHz ISM/SRD 波 ...

  9. JAVA-数据类型、变量、常量

    http://blog.csdn.net/yuhailong626/article/details/7245571 http://www.cnblogs.com/JackieADBM/p/534222 ...

  10. 探究rh6上mysql5.6的主从、半同步、GTID多线程、SSL认证主从复制

    http://407711169.blog.51cto.com/6616996/1203973/