Elasticsearch Ingest Pipeline引用path.virtual字段报错的解决方法
问题解决方法
你的问题出在测试文档的结构错误,导致Ingest Pipeline无法识别嵌套的path.virtual字段。
错误原因
你在模拟请求的docs._source里,把嵌套字段写成了扁平的字符串键"path.virtual",但Elasticsearch中path.virtual这个字段路径对应的是嵌套对象path下的virtual子字段,而非一个名为path.virtual的扁平字段。Pipeline在处理时找不到path这个父对象,因此抛出field [path] not present的错误。
修正后的模拟请求
把测试文档的结构改成正确的嵌套形式即可:
POST _ingest/pipeline/_simulate { "pipeline": { "description": "split words on line_number field", "processors": [ { "split": { "field": "path.virtual", "separator": "/", "target_field": "temporary_field" } }, { "set": { "field": "caseno", "value": "{{temporary_field.1}}" } }, { "set": { "field": "file", "value": "{{temporary_field.2}}" } }, { "remove": { "field": "temporary_field" } } ] }, "docs": [ { "_source": { "path": { "virtual": "/test/3.pdf" } } } ] }
额外说明
如果你的实际业务文档结构和你最开始给出的一致(嵌套的path对象包含virtual字段),修正测试文档后Pipeline就能正常解析path.virtual,并按预期提取caseno和file字段。
内容的提问来源于stack exchange,提问作者ScottyCov
相关产品推荐
相关产品推荐

