zoukankan      html  css  js  c++  java
  • es创建索引及别名更新mapping方法 elasticsearch [nested] nested object under path [XXX] is not of nested type

    [nested] nested object under path [XXX] is not of nested type这是因为在创建索引时没有指定类型为数组,这就是一个大坑,ES官方说可以不用指定数字组类型,结果不指定的聚合结果还不一样!!!

    由于Elasticsearch底层使用了lucene的原因,不支持对mapping的修改,可使用索引重建的方式,升级版本的思路来做别名映射处理。
    1.创建索引 创建一个索引,这个索引的名称最好带上版本号,比如my_index_v1,my_index_v2等。
    my_index_v1 PUT
    {
    "settings": {
    "index.mapping.total_fields.limit": 2000,
    "number_of_shards": 5,
    "number_of_replicas": 1
    }
    "mappings": {
    "_doc": {
    ...
    }
    }

    2.索引复制,使用reindex api将旧索引数据导入新索引
    _reindex POST
    {
    "source": {
    "index": "my_index",
    "type": "_doc"
    },

    "dest": {
    "index": "my_index_v1",
    "type": "_doc"

    }
    }

    3.在视图确认已经创建且复制成功,然后删除原来的索引
    my_index  DELETE

    4.创建同之前的索引的相同名称的别名,不删除索引而创建同名的别名会报错“an index exists with the same name as the alias”
    /_aliases PUT
    {
    "actions": [
    { "add": {
    "alias": "my_index",
    "index": "my_index_v1"
    }}
    ]
    }
    如果需要删除别名
    /_aliases PUT
    {
    "actions": [
    { "remove": {
    "alias": "my_index",
    "index": "my_index_v1"
    }}
    ]
    }
    无缝切换
    {
    "actions": [
    { "remove": {
    "alias": "my_index",
    "index": "my_index_v1"
    }},
    { "add": {
    "alias": "my_index",
    "index": "my_index_v2"
    }}
    ]
    }

    5.查看别名
    _alias GET

    查看别名
    http://IP地址:9201/_cat/aliases

  • 相关阅读:
    获取docx文件中表格的内容
    从指定地址获取文件进行正则匹配,输出至指定表格
    遍历ID从数据库获得需要的数据
    python实现将txt文件内容存入mysql数据库中
    Dockerfile 文件学习(二)
    Dockerfile 文件学习(二)
    Docker数据卷
    Docker最详细的命令记载
    docker学习
    Vm 热添加<在不重新启动虚拟机,就可以为虚拟机添加硬盘>
  • 原文地址:https://www.cnblogs.com/oktokeep/p/14476798.html
Copyright © 2011-2022 走看看