Elasticsearch:多个小查询与一个大查询-效率?

时间:2018-07-12 13:22:54

标签: php elasticsearch

在php循环中执行多个单个查询或将所有内容保留在数组中并为弹性建立一个更大的查询是否更有效?

选项1:

foreach ($rowset as $row) { 
//execute query:
"query": {
                     "bool" : {
                          "must" : [
                            {"term" : { "a" : "'.$row['a'].'" }},
                            {"term" : { "b" : "'.$row['b'].'" }}
                          ]
                    }
                }

}

选项2:

$search = "";

        foreach ($rowset as $key => $row) {

            if($key > 0) {

                $search .= ',';
            }

            $search .= '"must" : [
                            {"term" : { "a" : "'.$row['a'].'" }},
                            {"term" : { "b" : "'.$row['b'].'" }}
                          ]'
        }


"query": {
                     "bool" : {
                         "should" : [
                              "must" : [
                                '.$search.'
                              ]
                         ]
                    }
                }

在这个最小的示例中,语法可能不正确,但我希望这个主意变得清晰。我希望选项2更快。我现在还没有测试它,因为我现在有多个嵌套循环,并希望在重写代码之前进行选择。

2 个答案:

答案 0 :(得分:1)

外部资源请求总是很慢。因此,最好创建单个请求。外部数据库将以相同的速度处理它,但是您可以节省请求时间。

另一方面,您会收到如此大的查询,以至于您的客户端(例如浏览器)将超时,或者您无法将所有内容都存储到内存中进行处理。


使用具有合理数据量的单个查询。

答案 1 :(得分:0)

相关问题