对elasticsearch mapping的更改是否适用于已编入索引的文档?

时间:2014-02-27 14:38:04

标签: elasticsearch

如果我更改映射以使某些属性具有新的/不同的提升值,即使文档已被索引,这是否也有效?或者在文档编入索引时应用提升值吗?

2 个答案:

答案 0 :(得分:2)

索引数据后,无法更改字段级提升因子。一旦已经为先前数据编制了相同的字段,就不可能将新数据编入索引。

更改提升因子的唯一方法是重新索引数据。在不更改应用程序代码的情况下执行此操作的模式是使用别名。别名指向特定索引。如果要更改索引,则创建新索引,然后将旧索引中的数据重新索引到新索引,最后将别名更改为指向新索引。弹性搜索库可以支持重新索引数据,也可以通过扫描/滚动来实现。

  1. 第一个版本的映射

    索引:items_v1

    Alias:items - > items_v1

  2. 使用新的字段级别提升值更改必要的第二版索引:

    创建新索引:items_v2

    重新索引数据:items_v1 => items_v2

    更改别名:items - > items_v2

  3. 在您想要更改映射的其他情况下,这可能很有用。

    但不建议使用现场级别提升。更好的方法是在查询时使用提升。

    别名命令是:

    添加别名

    POST /_aliases
    {
        "actions": [
                { "add": {
                "alias": "tems",
                "index": "items_v1"
            }}
        ]
    }
    

    删除别名

    POST /_aliases
    {
        "actions": [
                { "remove": {
                "alias": "tems",
                "index": "items_v1"
            }}
        ]
    }
    

答案 1 :(得分:0)

他们没有。

通常不建议提高索引时间。相反,你应该在搜索时进行提升。