我正在使用append处理器将csv数据摄取到elasticsearch中。我已经有两个字段是对象(object1和object2),我想把它们都追加到一个不同字段的数组中(mainlist)。所以结果应该是值我已经用copy_from参数尝试了设置处理器,我得到了一个错误,我缺少所需的属性名“mainlist:[ {object1}, {object}]”,尽管ElasticSearch文档在使用"copy_from“时显然没有使用"value”属性。{"set": {"field": "mainlist","copy_from": ["object1", "object"]}}。我的语法甚至是从文档中完全复制过来的。请帮帮忙。
此外,我需要在摄取级别删除空字段,这样它们就不会被返回。我不希望将"fieldname:“返回给用户。最好的方法是什么呢?我刚开始使用ElasticSearch,它运行得并不顺利。
发布于 2020-11-11 17:26:09
至于在摄取级别删除空字段--设置一个管道:
PUT _ingest/pipeline/no_empty_fields
{
"description": "Removes empty-ish fields from a doc",
"processors": [
{
"script": {
"source": """
def keys_to_remove = ctx.keySet()
.stream()
.filter(field -> ctx[field] == null ||
ctx[field] == "")
.collect(Collectors.toList());
for (key in keys_to_remove) {
ctx.remove(key);
}
"""
}
}
]
}并在索引时应用它
POST myindex/_doc?pipeline=no_empty_fields
{
"fieldname23": 123,
"fieldname": null,
"fieldname123": ""
}当然,您可以扩展条件以丢弃其他字段,如"undefined"、"Infinity"和其他字段。
https://stackoverflow.com/questions/64774230
复制相似问题