gpt4 book ai didi

elasticsearch - ElasticSearch获取NULL值作为空字符串或 “N/A”

转载 作者:行者123 更新时间:2023-12-03 02:18:35 24 4
gpt4 key购买 nike

当我使用GET / index / _search在elasticsearch中搜索某些文档时,我得到的文档中有些字段为null。
例如:

"_source" : {
"ClientReference" : null,
"SenderMSISDN" : null,
}
但是我想要这样一种方式,以便将空值显示为“N / A”或空字符串“”,类似于IFNULL()在SQL查询中所做的事情。可能吗?
我尝试将映射作为下面的映射,但这不是解决方案
"ClientReference": {
"type": "keyword",
"null_value": "N/A"
},

最佳答案

Elasticsearch永远不会修改您要建立索引的源文档的内容。"null_value": "N/A"的作用是,如果您的文档中ClientReference为null,则ES将改为为N/A编制索引,但是源文档仍将包含"ClientReference": null
索引时修改源文档的唯一方法是利用ingest pipelines
例如,您可以创建一个将空值设置为ClientReferenceN/A的管道

PUT _ingest/pipeline/unnullify
{
"description" : "make sure to set default values to null fields",
"processors" : [
{
"set" : {
"if": "ctx.ClientReference == null",
"field": "ClientReference",
"value": "N/A"
}
}
]
}
然后,当您为文档建立索引时,需要像这样指定管道:
PUT my-index/_doc/1?pipeline=unnullify
{
"ClientReference" : null,
"SenderMSISDN" : null,
}
这样做将修改源文档并为其编制索引,如下所示:
{
"ClientReference" : "N/A",
"SenderMSISDN" : null,
}
如果您使用Logstash索引数据,则需要配置 elasticsearch输出插件以使用摄取管道,如下所示:
output {
elasticsearch {
...
pipeline => 'unnullify'
...
}
}

关于elasticsearch - ElasticSearch获取NULL值作为空字符串或 “N/A”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63035733/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com