我有1m记录,其中一个列是布尔的。它包含三个值。FALSE, TRUE, [Blank]。
我希望这个字段被视为布尔值。由于这种情况,它不被视为布尔值。据我所知,ES支持真或“真”作为布尔值,而不支持这方面的分析器。
还有其他方法处理我的记录吗?记录也是动态的。当负载到达时,必须适当地存储它。
发布于 2020-05-10 07:13:41
是的,有一种方法可以使用转换字段的摄食管道来实现这一点。
您可以创建一个包含处理器的管道,如下所示。转换为布尔值时,转换处理器将忽略大小写,因此"TRUE"将被转换为true。"FALSE"也一样。添加ignore_missing: true以忽略空值:
PUT _ingest/pipeline/bool-pipeline
{
"description": "converts FALSE/TRUE to boolean",
"processors" : [
{
"convert" : {
"field" : "bool",
"type": "boolean",
"ignore_missing": true
}
}
]
}然后,在对文档进行索引时,只需在查询中指定管道,文档就会在索引之前通过bool-pipeline。
PUT index/_doc/123?pipeline=bool-pipeline
{
"bool": "TRUE"
}
PUT index/_doc/456?pipeline=bool-pipeline
{
"bool": "FALSE"
}
PUT index/_doc/789?pipeline=bool-pipeline
{
"bool": null
}https://stackoverflow.com/questions/61708339
复制相似问题