我有一个如下所示的弹性索引结构,

"-source":{
    "file_name":"abc.ex",
    "file_format":"ex",
    "created_time":"2016-05-11"
    "mime_type":"xyz",
    "metadata":{
          "meta_id":"11222",
          "description":"xyzz",
          "profile":[
                  {"key_id":"1"
                   "value":2
                   },
                  {"key_id":"2",
                   "value":44
                   }...]
                 }
            }

在配置文件中,我应该将每个key_id映射到其值 . 此查询key_id =“1”AND值= 2应该匹配 . 出于这个原因,我将配置文件映射为嵌套对象,如下所示 .

{"metadata":{
    "properties":{
      "meta_id":{"type":"string"}...
      "profile":{
               "type":"nested",
               "properties":{
                      "key_id":{"type":"string"},
                      "value":{"type":"string"}
                        }}}

}

有没有其他方法而不是使它成为嵌套对象?因为它将它视为一个不同的文档,当我做一个简单的查询字符串搜索

{'query':{'bool':{_ 'must':[{_ 'query_string':{'query':u'abc ', ' fields ': [' metadata.profile.value ',' metadata.profile.meta-id']}}]}}}

它排除了嵌套文档(metadata.profile.value),但我希望它们被包含在内 . 这意味着什么“要添加,更改或删除嵌套文档,整个文档必须重新编制索引”?