我的索引中有两个映射。其中一个以不同货币存储一些金额,其他商店存储当前转换率。每个记录都像这样:
http://localhost:9200/transactions/amount
[{
_index: "transactions",
_type: "amount",
_id: "AVA3fjawwMA2f8TzMTbM",
_score: 1,
_source: {
balance: 1000,
currency:"usd"
}
},
{
_index: "transactions",
_type: "amount",
_id: "AVA3flUWwMA2f8TzMTbN",
_score: 1,
_source: {
balance: 2000,
currency:"inr"
}
}]
和
http://localhost:9200/transactions/conversions
{
_index: "transactions",
_type: "conversions",
_id: "rates",
_score: 1,
_source: {
"usd": 1,
"inr":62.6
}
}
我想查询amount
中的数据,并在单个查询中应用conversions
的当前转化率并获得结果。
我尝试使用脚本化查询,并能够根据传递的参数转换数据,如:
GET _search
{
"query": {
"match_all": {}
},
"script_fields" : {
"test1" : {
"script" : "_source.balance * factor",
"params" : {
"factor" : 63.2
}
}
}
}
但是在我的情况下,传递的params将从另一个查询的结果中获取。
我想以共同货币在Kibana中可视化我的数据。 Kibana支持脚本查询。据我所知,Kibana中的所有可视化对应于单个弹性搜索查询,因此我没有选项可以进行多个查询。
我还尝试探索使用https://www.elastic.co/blog/terms-filter-lookup并向结果集中的每个文档添加一些动态字段的可能性。但是,我不认为术语过滤器允许这样做。
答案 0 :(得分:2)
假设您尝试始终以美元绘制交易,您可以尝试the accepted answer here中描述的方法:
本质上:
conversions
文档都是同一外币中所有子transactions
文档的父文档。 (并且conversions
具有标准字段名称,例如"conversion_divisor": 62.6
)has_parent
查询条款。function_score
(script_score
)查询访问每个父级中的外币倍数,并通过将交易金额除以外币{{1}为每笔交易生成_score
}}。conversion_divisor