我是靠谱客的博主 机灵热狗,最近开发中收集的这篇文章主要介绍elasticsearch指定文档id由输入字段两个或多个以上组成项目场景:问题描述:原因分析:解决方案:,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
项目场景:
在使用elasticsearch时,常常会遇到需要指定文档id的场景,当文档id是由输入字段两个或多个以上组成的时候,这时候就犯了难。那么怎么处理呢?
问题描述:
文档id: 假设文档id由userid 和 queryTime组成,输入json字段属性为userid,username,queryTime,event 组成。这时候如何在不改变json字符串的基础上完成文档id由userid 和 queryTime组成的转变?
原因分析:
json字符串无法改变,elasticsearch7的特性是文档id要么默认产生要么指定文档id需要在输入内容上有特定字段进行指定。所以问题很简单了。
解决方案:
首先,和领导打个申请,申请输入elasticsearch里面的内容需要改变,需要加上一个"Lid"对应文档id,然后,嗯。。。。。。。用scala举个栗子吧。
既然元数据无法改变,而在elasticsearch中需要添加字段,那么,就加一个dataframe进行中转。
令:
val df = spark.read.format("json").option("header","true")load("file:///opt/a.json")
val newdf: DataFrame = df.withColumn("Lid",concat($"user_id",lit("_"),$"query_time"))
这一步操作就是使用mapping方法把文档id转变为指定Lid,固定写法,不要想太多,尤其是,哎呀呀,不应该是_id嘛,“_”呢,别想太多就是id。mapping是一种专门对索引进行管理的函数。还有,也别想着改,索引错了只能删库重来。
val cfg = Map("es.mapping.id"->"Lid")
EsSparkSQL.saveToEs(newdf, "index/type",cfg)
最后
以上就是机灵热狗为你收集整理的elasticsearch指定文档id由输入字段两个或多个以上组成项目场景:问题描述:原因分析:解决方案:的全部内容,希望文章能够帮你解决elasticsearch指定文档id由输入字段两个或多个以上组成项目场景:问题描述:原因分析:解决方案:所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复