弹性搜索嵌套对象替代方案

时间:2018-06-14 06:54:22

标签: elasticsearch

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

"-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映射到其值.Ex查询key_id =" 1" AND值= 2应该匹配。出于这个原因,我将配置文件映射为嵌套对象,如下所示。

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

}

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

{'查询':{' bool':{'必须':[{' query_string':{'查询& #39;:你' abc ','字段':[' metadata.profile.value','元数据。 profile.meta-ID']}}]}}}

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

0 个答案:

没有答案