当我在elasticsearch中使用GET/index_search搜索某个文档时,我会得到其中一些字段为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
。
在索引时修改源文档的唯一方法是利用摄取管道
例如,如果为空,您可以创建这样一个管道,将ClientReference
设置为N/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'
...
}
}