无论才能、知识多么卓著,如果缺乏热情,则无异纸上画饼充饥,无补于事。

es中, painless可以把json字符串转为数组或list的吗

Elasticsearch | 作者 a1667499668 | 发布于2023年04月21日 | 阅读数:3412

有一个字段里面存是这样的数据, 直接取出来却不是list类型, 请问有什么方法可以把它转成list或数组吗, es的版本是6.4.3
或者之前还找到了用插件的方式写java脚本, 大佬们可以介绍一下这种方式么
微信截图_20230421112052.png 微信截图_20230421112431.png
已邀请:

Charele - Cisco4321

赞同来自:

ES里没有list或数组这种类型,
你这个allNames我想应该是text(keyword)类型的,
 
比如你用 name : ["aaa",  "bbb"]这种形式插入数据,
其实和用name : "aaa bbb"这种的效果是一样的(分词后)
 
之所以你会在search时看到这种形式,那只是在"_source"这个字段里保存了插入时的原始内容

Ombres

赞同来自:

doc[]的含义是从docvalue中取数据,doc[].value常用于取单值,你这里会取到一个值,即字符串,doc[].get(0)用于多值
 
另外还有取值方式有从source取值,ctx._source.allNames,这种取出来就是list了. 
 
用法在不同的功能是有限制的,看问题不能确定你的使用场景,因此第二种不能确定是否能用。(比如score script的时候一般不能使用ctx, update的时候可以)
 

要回复问题请先登录注册