{"id":534,"title":"php\u4e2delasticsearch scroll\u65b9\u5f0f\u67e5\u8be2","good":0,"bad":0,"hit":2553,"created_at":"2021-03-25 21:16:50","content":"
<\/p>
\/**\n * scroll\u65b9\u5f0f\u4ecees\u4e2d\u67e5\u6570\u636e\n *\n * $fields = [\n * 'ticket_no'\n * ];\n * $query = [\n * 'term' => [\n * 'third_order_id' => $thirdOrderId,\n * ]\n * ];\n *\n * @param array $fields \u8981\u8fd4\u56de\u7684\u5b57\u6bb5\u540d\n * @param array $query \u67e5\u8be2\u6761\u4ef6\n * @param bool $justNo \u662f\u5426\u53ea\u8fd4\u56de\u5de5\u5355\u53f7\n * @param array $sort \u6392\u5e8f\u6761\u4ef6\n * @return array\n *\/\npublic function getEsDataByScroll(array $fields, array $query, $justNo, array $sort = [])\n{\n $result = [];\n $client = $this->connectElasticsearch();\n $esConfig = $this->container->getParameter('elasticsearch_indexs');\n $index = !empty($esConfig['tickets_index']) ? $esConfig['tickets_index'] : '';\n if (empty($sort)) {\n $sort = [\n [\n 'create_time' => [\n 'order' => 'desc',\n 'unmapped_type' => 'date'\n ]\n ]\n ];\n }\n $search = [\n 'index' => $index,\n 'type' => 'tk_tickets',\n 'from' => 0,\n 'size' => 10000,\n 'scroll' => '5m',\n 'body' => [\n '_source' => $fields,\n 'query' => [\n 'bool' => [\n 'must' => $query\n ]\n ],\n 'sort' => $sort\n ]\n ];\n $rows = $client->search($search);\n \/\/\u518d\u6b21\u67e5\u8be2\uff0c\u76f4\u81f3\u53d6\u5b8c\n while (!empty($rows['hits']['hits'])) {\n $result = array_merge($result, $rows['hits']['hits']);\n $scrollId = empty($rows['_scroll_id']) ? '' : $rows['_scroll_id'];\n $scrollParam['scroll'] = '5m';\n $scrollParam['scroll_id'] = $scrollId;\n $rows = $client->scroll($scrollParam);\n }\n\n if (!empty($result) && $justNo) {\n $ticketNos = [];\n foreach ($result as $v) {\n if (!empty($v['_source']['ticket_no'])) {\n array_push($ticketNos, $v['_source']['ticket_no']);\n }\n }\n $result = $ticketNos;\n }\n\n return $result;\n}<\/pre>
<\/p>"}