php - 匹配最接近的数值 elasticsearchDSL(php)
问题描述
我无法在 SO、弹性搜索文档或谷歌上找到适合我的用例的答案:找到最接近 X 输入但仍低于 X 的数字。
我有一个如下所示的映射:
{
"rule": {
"properties": {
"price": { "type": "long" },
"from": { "type": "long" }
}
}
}
我需要最接近的匹配from
,即小于输入值。例如,我有这些规则:
{
{ "rule": {"from": 1, "price": 5} },
{ "rule": {"from": 50, "price": 4} },
{ "rule": {"from": 100, "price": 3} },
{ "rule": {"from": 150, "price": 2} }
}
如果我搜索from
值为 off 75 的 ,我想要"from": 50
.
我找到的大多数答案都与地理/IP 或文本有关,我找不到一个让我点击它的例子。
解决方案
范围查询可用于获取小于等于输入值的所有规则。可以返回前 1 个排序的文档(按 from )
询问:
{
"query": {
"range": {
"rule.from": {
"lte": 75
}
}
},
"size": 1,
"sort": [
{
"rule.from": {
"order": "desc"
}
}
]
}
推荐阅读
- python - 将 rugarch R 库导入 python
- javascript - 如何在 laravel 的多个选项卡中导出数据表?
- angular - 使用 api 在事件数组中添加新事件后,更新的完整日历事件未呈现
- delphi - Delphi - 如何将多个 JPG 图像添加到 TCanvas 并打印它们
- xpath - 如何使用 xpath 从类中获取文本
- javascript - 动态添加列
- reactjs - 使用每个问题的答案为每个问题创建一个反应选择
- django - 使用 nginx 作为代理服务器在同一个 ubuntu 实例上运行多个 django 项目,nginx 将一些请求从一个域转发到错误的端口
- python - 如何擦除/删除 QGraphicPathItem 的特定部分?
- excel - Excel VBA - 单击排序按钮或从 IE 的下拉列表中选择