ElasticSearch 以空字符串或"N/A"的形式获取 NULL 值



当我在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'
        ...
    }
}

相关内容

  • 没有找到相关文章

最新更新