ElasticSearch范围查询:查找数字附近的值

时间:2020-07-09 18:21:51

标签: elasticsearch

我正在尝试为目标数字附近的范围构建ES查询。例如,如果我输入10000,则我希望1000个结果与#10000居中。问题是结果不完整,即可能有或没有值9999的东西,所以我不能只在9500和10500之间进行搜索。我的方法是进行两个不同的查询,一个查询的大小为500,查找所有小于或等于10000的值并按降序排序,第二个大小为500的查询查找所有大于10000的值并按升序排序。不幸的是,它不能按我想要的方式工作,最终我根本得不到#10000。我的查询如下:

query1 = {
    'size': 500,
    'sort': [{'id': {'order': 'desc', 'unmapped_type': 'boolean'}}],
    'query': {
        'bool': {
            'filter': [
                {'match_phrase': {'group_id': int(request.args['group'])}},
                {'range': {'id': {'lte': int(request.args['id'])}}}
            ]
        }
    }
}

query2 = {
    'size': 500,
    'sort': [{'id': {'order': 'asc', 'unmapped_type': 'boolean'}}],
    'query': {
        'bool': {
            'filter': [
                {'match_phrase': {'group_id': int(request.args['group'])}},
                {'range': {'id': {'gt': int(request.args['id'])}}}
            ]
        }
    }
}

我该如何进行这项工作?

0 个答案:

没有答案