我使用Spark(解析,清理,机器学习......)处理复杂的工作流程。 在工作流结束时,我想将聚合结果发送到elasticsearch,以便我的门户网站可以查询数据。 将有两种类型的处理:流式传输和在所有可用数据上重新启动工作流的可能性。
现在我使用elasticsearch-hadoop,特别是spark部分,使用saveJsonToEs(myindex / mytype)方法将文档发送到elasticsearch。 目标是使用我们构建的适当模板按天获得索引。 AFAIK您无法在文档中添加对要素的考虑,以将其发送到elasticsearch-hadoop中的正确索引。
实施此功能的正确方法是什么? 使用spark和bulk进行特殊步骤,以便每个执行程序根据每行的特征将文档发送到正确的索引? 有没有我在elasticsearch-hadoop中遗漏的东西?
我尝试使用saveJsonToEs(“_ bulk”)将JSON发送到_bulk,但模式必须遵循索引/类型
答案 0 :(得分:3)
感谢Costin Leau,我有解决方案。 只需使用类似saveJsonToEs(" my-index- {date} / my-type")的动态索引。 "日期"必须是必须发送的文档中的一个功能。
有关elasticsearch google群组的讨论:https://groups.google.com/forum/#!topic/elasticsearch/5-LwjQxVlhk
文档:http://www.elasticsearch.org/guide/en/elasticsearch/hadoop/master/spark.html#spark-write-dyn
答案 1 :(得分:0)
您可以使用:(" custom-index- {date} / customtype")来创建动态索引。这可以是给定rdd中的任何字段。
如果您想格式化日期:(" custom-index- {date:{YYYY.mm.dd}} / customtype") [回答Amit_Hora在评论中提出的问题,因为我没有足够的权利发表评论,我在这里补充一下]