我想用3 bedrooms
查询ElasticSearch(下面的数据),并期望输出返回id:20,21,22,23,24,25。
| id | bedrooms_min | bedrooms_max |
________________________________________
| 20 | 1 | 4 |
| 21 | 1 | 3 |
| 22 | 3 | 4 |
| 23 | 2 | 3 |
| 24 | 3 | 3 |
| 25 | 2 | 5 |
| 26 | 4 | 5 |
| 27 | 1 | 1 |
| 28 | 1 | 2 |
| 29 | 2 | 2 |
________________________________________
因为:
- ID 20:3在1和4之间。
- ID 21:bedrooms_max等于3。
- ID 22:bedrooms_min等于3。
- ID 23:bedrooms_max等于3。
- ID 24:
bedrooms_min = bedrooms_max = 3
- ID 25:3在2和5之间。
- ID 26:3超出范围
我正在寻找的BETWEEN
查询!
有可能吗?到目前为止,我尝试了multi_match
查询,但它没有给我ID:20和25,我怀疑这个结果集可以用multi-match查询来实现。
1条答案
按热度按时间6bc51xsx1#
我认为下面的查询可以做到这一点。它所做的基本上是找到所有具有
bedrooms_min <= 3 AND bedrooms_max >= 3
的文档,这是你所期望的:一个更好的解决方案是将您的卧室建模为
integer_range
field,以便您可以在其上运行simple intersectingrange
query。