%PDF- %PDF-
Direktori : /home/graphicd/public_html/vebto/vendor/elasticsearch/elasticsearch/docs/ |
Current File : /home/graphicd/public_html/vebto/vendor/elasticsearch/elasticsearch/docs/endpoint-closure.asciidoc |
[[endpoint-closure]] === Set the Endpoint closure The client uses an Endpoint closure to dispatch API requests to the correct Endpoint object. A namespace object will construct a new Endpoint via this closure, which means this is a handy location if you wish to extend the available set of API endpoints available. For example, we could add a new endpoint like so: [source,php] ---- $transport = $this->transport; $serializer = $this->serializer; $newEndpoint = function ($class) use ($transport, $serializer) { if ($class == 'SuperSearch') { return new MyProject\SuperSearch($transport); } else { // Default handler $fullPath = '\\Elasticsearch\\Endpoints\\' . $class; if ($class === 'Bulk' || $class === 'Msearch' || $class === 'MPercolate') { return new $fullPath($transport, $serializer); } else { return new $fullPath($transport); } } }; $client = ClientBuilder::create() ->setEndpoint($newEndpoint) ->build(); ---- Obviously, by doing this you take responsibility that all existing endpoints still function correctly. And you also assume the responsibility of correctly wiring the Transport and Serializer into each endpoint.