Elasticsearch近值查询

时间:2018-05-15 17:30:50

标签: elasticsearch

我有100个文件,字段价格在1000到10,000之间

例如:我想查询价格接近5000的4份文件,预期值可以多于或少于5000.

如果我设置范围,有时可能会给我空结果,因为它发现我的最大值和最小值之间没有结果。

我可以用更大的最小值和最大值重新查询它,但我不认为这是正确的解决方案。

我也试过Span queries,但它不支持数值

有没有办法在elasticsearch 6.0中执行此操作?

1 个答案:

答案 0 :(得分:0)

我至少有两种方法可以考虑这样做。

1:range query超过5000加上或减去某个常数的价格。根据您与查询价格的距离(在您的情况下为5000),在查询中添加sortReference

2:使用function_score计算范围查询中每个匹配的得分,其中包含专用于计算与价格5000的绝对距离的函数。Reference