首页 文章

ElasticSearch - 在查询1,000条件时如何执行

提问于
浏览
0

我需要能够在查询中搜索在一组用户ID中具有任何用户ID的记录 .

但是,必须搜索的用户ID数量将随着时间的推移而显着增长 . 因此,我必须能够为单个查询添加数千个用户ID,并搜索所有用户ID .

我正在考虑通过像盆景这样的托管服务来使用ElasticSearch .

在查询数千个条件时,ElasticSearch的性能如何?

1 回答

  • 2

    答案取决于很多东西(服务器数量,内存,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美元的入门信用,通常足以试验概念验证 .

相关问题