【问题标题】:Optimal bulk query size for multiSearch in ElasticSearchElasticSearch 中 multiSearch 的最佳批量查询大小
【发布时间】:2016-09-22 03:11:48
【问题描述】:

我正在尝试使用 multisearch 查询 elasticsearch,但它似乎并没有显着改善时间。

对于大约 70k 查询,不同 bulk_size 所花费的时间是:

对于每个项目的单次搜索时间 = 2611s

对于 multisearch (bulksize=1000) 耗时 = 2400s

对于 multisearch (bulksize=10) 耗时 = 2326s

所以,我需要知道

a) 这是进行 MultiSearch 的正确方法吗?

b) 多搜索的最佳批量大小是多少?

这是我的代码:

search_arr = []

        for k in range(i,i+BULK_SIZE):
            search_arr.append({'index':'test'})
            search_arr.append({"query": {"match": {"title": title[k]}}, "size": 5})
        request =''
        for each in search_arr:
            request += '%s \n' %json.dumps(each)

        resp = es.msearch(body=request)

【问题讨论】:

    标签: python algorithm elasticsearch


    【解决方案1】:

    并发搜索的数量受搜索线程池的限制。

    https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-threadpool.html

    用于计数/搜索操作。 线程池类型固定大小为 int((# of available_processors * 3) / 2) + 1, queue_size 为 1000。

    这意味着如果您有单处理器,那么您将有 2 个并发搜索,其余请求将进入队列并在线程再次可用时进行处理。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-26
      • 2017-03-22
      • 2018-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多