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