在R中从Elasticsearch索引提取text存储字段失败的技术问询
解决R语言elastic包提取Elasticsearch中text字段的问题
从你提供的Kibana记录来看,text字段并不在文档的_source节点中,而是单独出现在fields节点下,说明该字段是单独存储但未包含在文档原始源数据里。针对这个情况,你可以尝试以下几种解决方案:
方法1:直接使用fields参数查询
虽然官方说明提到ES v5+版本改用stored_fields,但结合你的ES 7.3.1版本和elastic包1.2.0版本,直接传递fields参数可能能正确返回目标字段:
library(elastic) docs <- Search(c, "document-000002", size = 8, fields = c("text", "servicedate"))$hits$hits
方法2:通过DSL查询体指定字段
如果高层参数传递存在兼容问题,直接构造查询DSL体是更可靠的方式:
query_body <- list( size = 8, fields = list("text", "servicedate") ) docs <- Search(c, index = "document-000002", body = query_body)$hits$hits
额外检查:确认字段映射有效性
如果以上方法仍无效,建议先确认text字段的映射是否设置了stored: true(只有标记为存储的字段才能通过fields/stored_fields获取),可以用elastic包的GetMapping函数查看:
GetMapping(c, index = "document-000002", fields = "text")
若返回的映射中stored为false,则需要修改字段映射(注意修改映射通常需要重新索引数据)。
内容的提问来源于stack exchange,提问作者aleful
相关产品推荐
相关产品推荐

