Elastic Search:Elastic Search 7.1中扁平化数据类型的替代方法

时间:2020-07-04 04:37:32

标签: elasticsearch elasticsearch-7

我有两个Elastic Search版本,一个是 7.3 ,另一个是 7.1 。我正在为{strong> Elastic Search 7.3 使用flattened数据类型,并且我也想在 Elastic Search 7.1 中使用此数据类型。这样我就可以像存储在 Elastic Search 7.3 中的数据一样存储数据。
我研究了flattened数据类型,并了解到7.x支持该数据类型,但是当我在7.1中进行尝试时,它给了我mapper_parsing_exception错误。
我尝试过的内容如下所示。

  • Elastic Search 7.3

    索引创建

    PUT demo-flattened
    
    回复
       {
        "acknowledged": true,
        "shards_acknowledged": true,
        "index": "demo-flattened"
       }
    

    插入映射

        PUT demo-flattened/_mapping
        {
            "properties": {
                "host": {
                    "type": "flattened"
                }
            }
        }
    
    回复
        {
            "acknowledged": true
        }
    
  • Elastic Search 7.1
     PUT demo-flattened
    
    回复
       {
        "acknowledged": true,
        "shards_acknowledged": true,
        "index": "demo-flattened"
       }
    

    插入映射

        PUT demo-flattened/_mapping
        {
            "properties": {
                "host": {
                    "type": "flattened"
                }
            }
        }
    
    回复
       {
           "error": {
               "root_cause": [
                   {
                       "type": "mapper_parsing_exception",
                       "reason": "No handler for type [flattened] declared on field [host]"
                   }
               ],
               "type": "mapper_parsing_exception",
               "reason": "No handler for type [flattened] declared on field [host]"
           },
           "status": 400
       }
    

我想在 Elastic Search 7.1 中使用flattened数据类型。在 Elastic Search 7.3 中支持flattened数据类型。在7.1版本中,是否可以使用flattened数据类型。

任何帮助或建议将不胜感激。

1 个答案:

答案 0 :(得分:0)

从内部来看,它是这样的

索引值的方式相似,扁平字段与关键字字段具有许多相同的映射和搜索功能

在这里,您只有一个名为host的字段。您可以将其替换为keyword

有什么相似之处:

映射:

"labels": {
        "type": "flattened"
      }

数据:

"labels": {
    "priority": "urgent",
    "release": ["v1.2.5", "v1.3.0"],
    "timestamp": {
      "created": 1541458026,
      "closed": 1541457010
    }
  }

在建立索引期间,将为JSON对象中的每个叶值创建令牌。这些值被索引为字符串关键字,无需分析或对数字或日期进行特殊处理

要查询它们,可以使用"term": {"labels": "urgent"}"term": {"labels.release": "v1.3.0"}

当它是关键字时,可以将它们作为单独的字段。

{
 "host":{
   "type":"keyword"
 }
}

Reference

相关问题