我需要能够在查询中搜索在一组用户ID中具有任何用户ID的记录 .
但是,必须搜索的用户ID数量将随着时间的推移而显着增长 . 因此,我必须能够为单个查询添加数千个用户ID,并搜索所有用户ID .
我正在考虑通过像盆景这样的托管服务来使用ElasticSearch .
在查询数千个条件时,ElasticSearch的性能如何?
答案取决于很多东西(服务器数量,内存,CPU等),并且可能需要进行一些实验才能找出最适合您的方法 . 我相信Elasticsearch可以解决您的问题,但一般来说很难预测性能 .
您可能想调查terms lookup . 基本上,您将要搜索的所有术语存储在索引(或另一个)中的文档中,然后您可以在搜索中引用该列表 .
因此,您可以保存要搜索的ID
PUT /test_index/idlist/1 { "ids" : [2,1982,939,1982,98716,7611,983838,...] }
然后,您可以使用该列表搜索其他类型,例如,使用顶级过滤器:
POST /test_index/doc/_search { "filter": { "terms": { "id": { "index": "test_index", "type": "idlist", "id": "1", "path": "ids" } } } }
如果您要多次运行同一个查询,这可能才有意义 . 但是,您可以拥有多个ID列表,并且如果有帮助,则为文档提供描述性ID .
使用托管服务可以轻松地尝试不同的群集设置(节点数,计算机大小,数据中心等) . 我建议你看看Qbox(我有偏见,因为我和Qbox一起工作) . 新客户获得40美元的入门信用,通常足以试验概念验证 .
1 回答
答案取决于很多东西(服务器数量,内存,CPU等),并且可能需要进行一些实验才能找出最适合您的方法 . 我相信Elasticsearch可以解决您的问题,但一般来说很难预测性能 .
您可能想调查terms lookup . 基本上,您将要搜索的所有术语存储在索引(或另一个)中的文档中,然后您可以在搜索中引用该列表 .
因此,您可以保存要搜索的ID
然后,您可以使用该列表搜索其他类型,例如,使用顶级过滤器:
如果您要多次运行同一个查询,这可能才有意义 . 但是,您可以拥有多个ID列表,并且如果有帮助,则为文档提供描述性ID .
使用托管服务可以轻松地尝试不同的群集设置(节点数,计算机大小,数据中心等) . 我建议你看看Qbox(我有偏见,因为我和Qbox一起工作) . 新客户获得40美元的入门信用,通常足以试验概念验证 .