Sam*_*rma 5 elasticsearch elasticsearch-plugin pyelasticsearch elasticsearch-jdbc-river spring-data-elasticsearch
我需要的很简单,但我无法在 Elasticsearch 中找到如何去做,可能是因为需要完成的工作很复杂。
输入(两个示例 JSON 文档)
{ "car" : 150, "bike" : 300 }
{ "car" : 100, "bike" : 200}
Run Code Online (Sandbox Code Playgroud)
我想要的回报是,当我触发搜索查询时,它会返回带有额外字段的文档,该字段inventory
定义为汽车和自行车数量的总和。并按排序顺序。
示例输出:
hits: [
{ "car" : 150, "bike" : 300, "inventory": 450},
{ "car" : 100, "bike" : 200, "inventory": 300}
]
Run Code Online (Sandbox Code Playgroud)
在elasticsearch中可以做这样的事情吗?(我假设使用动态脚本)
我使用脚本字段做到了这一点。参考:
示例查询:
query: {
...
},
script_fields: {
inventory: {
script: "doc['car'].value + doc['bike'].value"
}
}
Run Code Online (Sandbox Code Playgroud)
这将产生一个单独的字段列,每次点击如下:
fields: {
inventory: [450]
}
Run Code Online (Sandbox Code Playgroud)
但是,由于我也希望对其进行排序,所以我最终使用了排序:
query: {
...
},
sort: {
_script: {
script: "doc['car'].value + doc['bike'].value",
type: "number",
order: "desc"
}
}
Run Code Online (Sandbox Code Playgroud)
每次点击都会返回一个排序字段,例如:
sort: [450]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3734 次 |
最近记录: |