我有两个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
数据类型。
任何帮助或建议将不胜感激。
答案 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"
}
}