在Elasticsearch中将字段重命名为新索引

时间:2017-02-23 18:52:45

标签: elasticsearch

我有一个带有此映射的索引:

curl -XPUT 'http://localhost:9200/origindex/_mapping/page' -d '
   {
    "page" : {
        "properties" : {
            "title" : {"type" : "text"},
            "body" : {"type" : "text"},
            "other": {"type": "text"}
        }
     }
   }'

在新索引中,我想复制" title" to" title1" " title2"和" body"到" body1"和" body2" (无视"其他"),并从"页面"更改类型; to" articles_eng"。新索引具有以下映射:

curl -XPUT 'http://localhost:9200/newindex/_mapping/articles_eng' -d '                             
{                                                                                                  
    "articles_eng" : {                                                                             
        "properties" : {                                                                           
            "title1" : {                                                                     
                 "type" : "text",                                                                  
                 "analyzer" : "my_analyzer1"                                                    
             },                                                                                     
            "title2" : {                                                                   
                 "type" : "text",                                                                  
                 "analyzer": "my_analyzer2"                                                    
             },                                                                                     
            "body1": {                                                                       
                "type" : "text",                                                                  
                "analyzer": "my_analyzer1"                                                     
            },                                                                                     
            "body2" : {                                                                     
                "type" : "text",                                                                  
                "analyzer": "my_analyzer2" 
            }                                                   
        }                                                                                      
    }                                                                                          
}'                                                                                              

通过查看this answerElasticsearch reindex docs,我想出了类似的内容:

curl -XPOST http://localhost:9200/_reindex -d '{                                                   
    "source": {                                                                                    
        "index": "origindex",                                                                          
        "type": "page",                                                                            
        "query": {                                                                                 
           "match_all": {}                                                                         
        },                                                                                         
        "_source": [ "title", "body" ]                                                             
    },                                                                                             
    "dest": {                                                                                      
        "index": "newindex"                                                                        
    },                                                                                             
    "script": {                                                                                    
        "inline": "ctx._type = \"articles_eng\"";                                                  
                  "ctx._title1 = ctx._source._title";                                         
                  "ctx._title2 = ctx._source._title";                                       
                  "ctx._body1 = ctx._source._body";                                          
                  "ctx._body2 = ctx._source._body"                                                                                                   
    }                                                                                              
}'

我遇到了脚本行的问题。如果我只做顶行(更改文档类型),一切正常。如果我添加其余的行,我会收到错误

  

" [reindex]无法解析字段[script]"

引起的

  

"意外的角色(&#39 ;;'(代码59)):期待逗号分开   对象条目\ n在[来源:   org.elasticsearch.transport.netty4.ByteBufStreamInput@37649463;线:   14,专栏:50]"

即使我可以使用多个语句解决问题,只需输入第二行就会出现错误

  

"无效字段已添加到上下文[title1]"}]

任何人都可以帮助我吗?这似乎不可能做到。

0 个答案:

没有答案