标签: elasticsearch
我有100个文件,字段价格在1000到10,000之间
例如:我想查询价格接近5000的4份文件,预期值可以多于或少于5000.
如果我设置范围,有时可能会给我空结果,因为它发现我的最大值和最小值之间没有结果。
我可以用更大的最小值和最大值重新查询它,但我不认为这是正确的解决方案。
我也试过Span queries,但它不支持数值
有没有办法在elasticsearch 6.0中执行此操作?
答案 0 :(得分:0)
我至少有两种方法可以考虑这样做。
1:range query超过5000加上或减去某个常数的价格。根据您与查询价格的距离(在您的情况下为5000),在查询中添加sort。 Reference
range query
sort
2:使用function_score计算范围查询中每个匹配的得分,其中包含专用于计算与价格5000的绝对距离的函数。Reference
function_score