我想知道是否有可能在Elasticsearch中查询2个索引,并将结果混合在一起显示在1个表中。例如:
指标:
food-american-burger
food-italian-pizza
food-japanese-ramen
food-mexican-burritos
#query here for burger and pizza, and display the results in a csv file
#i.e. if there was a timestamp field, display results starting from the most recent
我知道您可以查询food- *,但它会给出2个我不想要的索引。
我查找了Elasticsearch DSL的multisearch模块,但文档仅显示了1个索引查询的实例:
ms = MultiSearch(index='blogs')
ms = ms.add(Search().filter('term', tags='python'))
ms = ms.add(Search().filter('term', tags='elasticsearch'))
第1部分:
是否可以将其用于多个索引?最终,我想查询x个索引并以一种人类可读的格式(csv,json等)显示所有数据,但是我不确定如何仅对索引I执行单个查询想要。
我目前具有执行查询和写出数据的功能,但是每个数据文件仅包含我查询的索引。我想将所有数据显示在一个文件中。
第2部分:
数据存储在字典中,然后将其写入csv。当前正在按时间戳进行排序。代码:
sorted_rows = sorted(rows,key=lambda x: x['@timestamp'], reverse=True)
for row in sorted_rows:
writer.writerow(row.values())
在写入csv时,时间戳记字段不是第一列。我将字段存储在字典中,并为每次Elasticsearch命中更新该字典,然后将其写入csv。有没有办法将时间戳字段移到第一列?
谢谢!
答案 0 :(得分:2)
根据Elasticsearch Docs,您可以使用{{1}查询单个索引(例如food-american-burger
),多个逗号分隔的索引(例如food-american-burger,food-italian-pizza
)或所有索引}关键字。
我还没有亲自使用过Python客户端,但这是一个API约定,应该适用于任何正式的Elasticsearch客户端。
对于第2部分,您可能应该提交一个单独的问题,以使每个问题都集中在一个主题上,因为这两个主题并不直接相关。