vendor/elasticsearch/elasticsearch/src/Elasticsearch/Client.php line 781

Open in your IDE?
  1. <?php
  2. /**
  3.  * Elasticsearch PHP client
  4.  *
  5.  * @link      https://github.com/elastic/elasticsearch-php/
  6.  * @copyright Copyright (c) Elasticsearch B.V (https://www.elastic.co)
  7.  * @license   http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
  8.  * @license   https://www.gnu.org/licenses/lgpl-2.1.html GNU Lesser General Public License, Version 2.1 
  9.  * 
  10.  * Licensed to Elasticsearch B.V under one or more agreements.
  11.  * Elasticsearch B.V licenses this file to you under the Apache 2.0 License or
  12.  * the GNU Lesser General Public License, Version 2.1, at your option.
  13.  * See the LICENSE file in the project root for more information.
  14.  */
  15. declare(strict_types 1);
  16. namespace Elasticsearch;
  17. use Elasticsearch\Common\Exceptions\BadMethodCallException;
  18. use Elasticsearch\Common\Exceptions\InvalidArgumentException;
  19. use Elasticsearch\Common\Exceptions\NoNodesAvailableException;
  20. use Elasticsearch\Common\Exceptions\BadRequest400Exception;
  21. use Elasticsearch\Common\Exceptions\Missing404Exception;
  22. use Elasticsearch\Common\Exceptions\TransportException;
  23. use Elasticsearch\Endpoints\AbstractEndpoint;
  24. use Elasticsearch\Namespaces\AbstractNamespace;
  25. use Elasticsearch\Namespaces\NamespaceBuilderInterface;
  26. use Elasticsearch\Namespaces\BooleanRequestWrapper;
  27. use Elasticsearch\Namespaces\AsyncSearchNamespace;
  28. use Elasticsearch\Namespaces\AutoscalingNamespace;
  29. use Elasticsearch\Namespaces\CatNamespace;
  30. use Elasticsearch\Namespaces\CcrNamespace;
  31. use Elasticsearch\Namespaces\ClusterNamespace;
  32. use Elasticsearch\Namespaces\DanglingIndicesNamespace;
  33. use Elasticsearch\Namespaces\DataFrameTransformDeprecatedNamespace;
  34. use Elasticsearch\Namespaces\EnrichNamespace;
  35. use Elasticsearch\Namespaces\EqlNamespace;
  36. use Elasticsearch\Namespaces\FeaturesNamespace;
  37. use Elasticsearch\Namespaces\FleetNamespace;
  38. use Elasticsearch\Namespaces\GraphNamespace;
  39. use Elasticsearch\Namespaces\IlmNamespace;
  40. use Elasticsearch\Namespaces\IndicesNamespace;
  41. use Elasticsearch\Namespaces\IngestNamespace;
  42. use Elasticsearch\Namespaces\LicenseNamespace;
  43. use Elasticsearch\Namespaces\LogstashNamespace;
  44. use Elasticsearch\Namespaces\MigrationNamespace;
  45. use Elasticsearch\Namespaces\MlNamespace;
  46. use Elasticsearch\Namespaces\MonitoringNamespace;
  47. use Elasticsearch\Namespaces\NodesNamespace;
  48. use Elasticsearch\Namespaces\RollupNamespace;
  49. use Elasticsearch\Namespaces\SearchableSnapshotsNamespace;
  50. use Elasticsearch\Namespaces\SecurityNamespace;
  51. use Elasticsearch\Namespaces\ShutdownNamespace;
  52. use Elasticsearch\Namespaces\SlmNamespace;
  53. use Elasticsearch\Namespaces\SnapshotNamespace;
  54. use Elasticsearch\Namespaces\SqlNamespace;
  55. use Elasticsearch\Namespaces\SslNamespace;
  56. use Elasticsearch\Namespaces\TasksNamespace;
  57. use Elasticsearch\Namespaces\TextStructureNamespace;
  58. use Elasticsearch\Namespaces\TransformNamespace;
  59. use Elasticsearch\Namespaces\WatcherNamespace;
  60. use Elasticsearch\Namespaces\XpackNamespace;
  61. /**
  62.  * Class Client
  63.  *
  64.  * NOTE: this file is autogenerated using util/GenerateEndpoints.php
  65.  * and Elasticsearch 7.16.0 (6fc81662312141fe7691d7c1c91b8658ac17aa0d)
  66.  */
  67. class Client
  68. {
  69.     const VERSION '7.16.0';
  70.     /**
  71.      * @var Transport
  72.      */
  73.     public $transport;
  74.     /**
  75.      * @var array
  76.      */
  77.     protected $params;
  78.     /**
  79.      * @var callable
  80.      */
  81.     protected $endpoints;
  82.     /**
  83.      * @var NamespaceBuilderInterface[]
  84.      */
  85.     protected $registeredNamespaces = [];
  86.     /**
  87.      * @var AsyncSearchNamespace
  88.      */
  89.     protected $asyncSearch;
  90.     
  91.     /**
  92.      * @var AutoscalingNamespace
  93.      */
  94.     protected $autoscaling;
  95.     
  96.     /**
  97.      * @var CatNamespace
  98.      */
  99.     protected $cat;
  100.     
  101.     /**
  102.      * @var CcrNamespace
  103.      */
  104.     protected $ccr;
  105.     
  106.     /**
  107.      * @var ClusterNamespace
  108.      */
  109.     protected $cluster;
  110.     
  111.     /**
  112.      * @var DanglingIndicesNamespace
  113.      */
  114.     protected $danglingIndices;
  115.     
  116.     /**
  117.      * @var DataFrameTransformDeprecatedNamespace
  118.      */
  119.     protected $dataFrameTransformDeprecated;
  120.     
  121.     /**
  122.      * @var EnrichNamespace
  123.      */
  124.     protected $enrich;
  125.     
  126.     /**
  127.      * @var EqlNamespace
  128.      */
  129.     protected $eql;
  130.     
  131.     /**
  132.      * @var FeaturesNamespace
  133.      */
  134.     protected $features;
  135.     
  136.     /**
  137.      * @var FleetNamespace
  138.      */
  139.     protected $fleet;
  140.     
  141.     /**
  142.      * @var GraphNamespace
  143.      */
  144.     protected $graph;
  145.     
  146.     /**
  147.      * @var IlmNamespace
  148.      */
  149.     protected $ilm;
  150.     
  151.     /**
  152.      * @var IndicesNamespace
  153.      */
  154.     protected $indices;
  155.     
  156.     /**
  157.      * @var IngestNamespace
  158.      */
  159.     protected $ingest;
  160.     
  161.     /**
  162.      * @var LicenseNamespace
  163.      */
  164.     protected $license;
  165.     
  166.     /**
  167.      * @var LogstashNamespace
  168.      */
  169.     protected $logstash;
  170.     
  171.     /**
  172.      * @var MigrationNamespace
  173.      */
  174.     protected $migration;
  175.     
  176.     /**
  177.      * @var MlNamespace
  178.      */
  179.     protected $ml;
  180.     
  181.     /**
  182.      * @var MonitoringNamespace
  183.      */
  184.     protected $monitoring;
  185.     
  186.     /**
  187.      * @var NodesNamespace
  188.      */
  189.     protected $nodes;
  190.     
  191.     /**
  192.      * @var RollupNamespace
  193.      */
  194.     protected $rollup;
  195.     
  196.     /**
  197.      * @var SearchableSnapshotsNamespace
  198.      */
  199.     protected $searchableSnapshots;
  200.     
  201.     /**
  202.      * @var SecurityNamespace
  203.      */
  204.     protected $security;
  205.     
  206.     /**
  207.      * @var ShutdownNamespace
  208.      */
  209.     protected $shutdown;
  210.     
  211.     /**
  212.      * @var SlmNamespace
  213.      */
  214.     protected $slm;
  215.     
  216.     /**
  217.      * @var SnapshotNamespace
  218.      */
  219.     protected $snapshot;
  220.     
  221.     /**
  222.      * @var SqlNamespace
  223.      */
  224.     protected $sql;
  225.     
  226.     /**
  227.      * @var SslNamespace
  228.      */
  229.     protected $ssl;
  230.     
  231.     /**
  232.      * @var TasksNamespace
  233.      */
  234.     protected $tasks;
  235.     
  236.     /**
  237.      * @var TextStructureNamespace
  238.      */
  239.     protected $textStructure;
  240.     
  241.     /**
  242.      * @var TransformNamespace
  243.      */
  244.     protected $transform;
  245.     
  246.     /**
  247.      * @var WatcherNamespace
  248.      */
  249.     protected $watcher;
  250.     
  251.     /**
  252.      * @var XpackNamespace
  253.      */
  254.     protected $xpack;
  255.     
  256.     /**
  257.      * Client constructor
  258.      *
  259.      * @param Transport           $transport
  260.      * @param callable            $endpoint
  261.      * @param AbstractNamespace[] $registeredNamespaces
  262.      */
  263.     public function __construct(Transport $transport, callable $endpoint, array $registeredNamespaces)
  264.     {
  265.         $this->transport $transport;
  266.         $this->endpoints $endpoint;
  267.         $this->asyncSearch = new AsyncSearchNamespace($transport$endpoint);
  268.         $this->autoscaling = new AutoscalingNamespace($transport$endpoint);
  269.         $this->cat = new CatNamespace($transport$endpoint);
  270.         $this->ccr = new CcrNamespace($transport$endpoint);
  271.         $this->cluster = new ClusterNamespace($transport$endpoint);
  272.         $this->danglingIndices = new DanglingIndicesNamespace($transport$endpoint);
  273.         $this->dataFrameTransformDeprecated = new DataFrameTransformDeprecatedNamespace($transport$endpoint);
  274.         $this->enrich = new EnrichNamespace($transport$endpoint);
  275.         $this->eql = new EqlNamespace($transport$endpoint);
  276.         $this->features = new FeaturesNamespace($transport$endpoint);
  277.         $this->fleet = new FleetNamespace($transport$endpoint);
  278.         $this->graph = new GraphNamespace($transport$endpoint);
  279.         $this->ilm = new IlmNamespace($transport$endpoint);
  280.         $this->indices = new IndicesNamespace($transport$endpoint);
  281.         $this->ingest = new IngestNamespace($transport$endpoint);
  282.         $this->license = new LicenseNamespace($transport$endpoint);
  283.         $this->logstash = new LogstashNamespace($transport$endpoint);
  284.         $this->migration = new MigrationNamespace($transport$endpoint);
  285.         $this->ml = new MlNamespace($transport$endpoint);
  286.         $this->monitoring = new MonitoringNamespace($transport$endpoint);
  287.         $this->nodes = new NodesNamespace($transport$endpoint);
  288.         $this->rollup = new RollupNamespace($transport$endpoint);
  289.         $this->searchableSnapshots = new SearchableSnapshotsNamespace($transport$endpoint);
  290.         $this->security = new SecurityNamespace($transport$endpoint);
  291.         $this->shutdown = new ShutdownNamespace($transport$endpoint);
  292.         $this->slm = new SlmNamespace($transport$endpoint);
  293.         $this->snapshot = new SnapshotNamespace($transport$endpoint);
  294.         $this->sql = new SqlNamespace($transport$endpoint);
  295.         $this->ssl = new SslNamespace($transport$endpoint);
  296.         $this->tasks = new TasksNamespace($transport$endpoint);
  297.         $this->textStructure = new TextStructureNamespace($transport$endpoint);
  298.         $this->transform = new TransformNamespace($transport$endpoint);
  299.         $this->watcher = new WatcherNamespace($transport$endpoint);
  300.         $this->xpack = new XpackNamespace($transport$endpoint);
  301.         $this->registeredNamespaces $registeredNamespaces;
  302.     }
  303.     /**
  304.      * Allows to perform multiple index/update/delete operations in a single request.
  305.      *
  306.      * $params['index']                  = (string) Default index for items which don't provide one
  307.      * $params['type']                   = DEPRECATED (string) Default document type for items which don't provide one
  308.      * $params['wait_for_active_shards'] = (string) Sets the number of shard copies that must be active before proceeding with the bulk operation. Defaults to 1, meaning the primary shard only. Set to `all` for all shard copies, otherwise set to any non-negative value less than or equal to the total number of copies for the shard (number of replicas + 1)
  309.      * $params['refresh']                = (enum) If `true` then refresh the affected shards to make this operation visible to search, if `wait_for` then wait for a refresh to make this operation visible to search, if `false` (the default) then do nothing with refreshes. (Options = true,false,wait_for)
  310.      * $params['routing']                = (string) Specific routing value
  311.      * $params['timeout']                = (time) Explicit operation timeout
  312.      * $params['_source']                = (list) True or false to return the _source field or not, or default list of fields to return, can be overridden on each sub-request
  313.      * $params['_source_excludes']       = (list) Default list of fields to exclude from the returned _source field, can be overridden on each sub-request
  314.      * $params['_source_includes']       = (list) Default list of fields to extract and return from the _source field, can be overridden on each sub-request
  315.      * $params['pipeline']               = (string) The pipeline id to preprocess incoming documents with
  316.      * $params['require_alias']          = (boolean) Sets require_alias for all incoming documents. Defaults to unset (false)
  317.      * $params['body']                   = (array) The operation definition and data (action-data pairs), separated by newlines (Required)
  318.      *
  319.      * @param array $params Associative array of parameters
  320.      * @return array
  321.      * @see https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-bulk.html
  322.      */
  323.     public function bulk(array $params = [])
  324.     {
  325.         $index $this->extractArgument($params'index');
  326.         $type $this->extractArgument($params'type');
  327.         $body $this->extractArgument($params'body');
  328.         $endpointBuilder $this->endpoints;
  329.         $endpoint $endpointBuilder('Bulk');
  330.         $endpoint->setParams($params);
  331.         $endpoint->setIndex($index);
  332.         $endpoint->setType($type);
  333.         $endpoint->setBody($body);
  334.         return $this->performRequest($endpoint);
  335.     }
  336.     /**
  337.      * Explicitly clears the search context for a scroll.
  338.      *
  339.      * $params['scroll_id'] = DEPRECATED (list) A comma-separated list of scroll IDs to clear
  340.      * $params['body']      = (array) A comma-separated list of scroll IDs to clear if none was specified via the scroll_id parameter
  341.      *
  342.      * @param array $params Associative array of parameters
  343.      * @return array
  344.      * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/clear-scroll-api.html
  345.      */
  346.     public function clearScroll(array $params = [])
  347.     {
  348.         $scroll_id $this->extractArgument($params'scroll_id');
  349.         $body $this->extractArgument($params'body');
  350.         $endpointBuilder $this->endpoints;
  351.         $endpoint $endpointBuilder('ClearScroll');
  352.         $endpoint->setParams($params);
  353.         $endpoint->setScrollId($scroll_id);
  354.         $endpoint->setBody($body);
  355.         return $this->performRequest($endpoint);
  356.     }
  357.     /**
  358.      * Close a point in time
  359.      *
  360.      * $params['body'] = (array) a point-in-time id to close
  361.      *
  362.      * @param array $params Associative array of parameters
  363.      * @return array
  364.      * @see https://www.elastic.co/guide/en/elasticsearch/reference/master/point-in-time-api.html
  365.      */
  366.     public function closePointInTime(array $params = [])
  367.     {
  368.         $body $this->extractArgument($params'body');
  369.         $endpointBuilder $this->endpoints;
  370.         $endpoint $endpointBuilder('ClosePointInTime');
  371.         $endpoint->setParams($params);
  372.         $endpoint->setBody($body);
  373.         return $this->performRequest($endpoint);
  374.     }
  375.     /**
  376.      * Returns number of documents matching a query.
  377.      *
  378.      * $params['index']              = (list) A comma-separated list of indices to restrict the results
  379.      * $params['type']               = DEPRECATED (list) A comma-separated list of types to restrict the results
  380.      * $params['ignore_unavailable'] = (boolean) Whether specified concrete indices should be ignored when unavailable (missing or closed)
  381.      * $params['ignore_throttled']   = (boolean) Whether specified concrete, expanded or aliased indices should be ignored when throttled
  382.      * $params['allow_no_indices']   = (boolean) Whether to ignore if a wildcard indices expression resolves into no concrete indices. (This includes `_all` string or when no indices have been specified)
  383.      * $params['expand_wildcards']   = (enum) Whether to expand wildcard expression to concrete indices that are open, closed or both. (Options = open,closed,hidden,none,all) (Default = open)
  384.      * $params['min_score']          = (number) Include only documents with a specific `_score` value in the result
  385.      * $params['preference']         = (string) Specify the node or shard the operation should be performed on (default: random)
  386.      * $params['routing']            = (list) A comma-separated list of specific routing values
  387.      * $params['q']                  = (string) Query in the Lucene query string syntax
  388.      * $params['analyzer']           = (string) The analyzer to use for the query string
  389.      * $params['analyze_wildcard']   = (boolean) Specify whether wildcard and prefix queries should be analyzed (default: false)
  390.      * $params['default_operator']   = (enum) The default operator for query string query (AND or OR) (Options = AND,OR) (Default = OR)
  391.      * $params['df']                 = (string) The field to use as default where no field prefix is given in the query string
  392.      * $params['lenient']            = (boolean) Specify whether format-based query failures (such as providing text to a numeric field) should be ignored
  393.      * $params['terminate_after']    = (number) The maximum count for each shard, upon reaching which the query execution will terminate early
  394.      * $params['body']               = (array) A query to restrict the results specified with the Query DSL (optional)
  395.      *
  396.      * @param array $params Associative array of parameters
  397.      * @return array
  398.      * @see https://www.elastic.co/guide/en/elasticsearch/reference/master/search-count.html
  399.      */
  400.     public function count(array $params = [])
  401.     {
  402.         $index $this->extractArgument($params'index');
  403.         $type $this->extractArgument($params'type');
  404.         $body $this->extractArgument($params'body');
  405.         $endpointBuilder $this->endpoints;
  406.         $endpoint $endpointBuilder('Count');
  407.         $endpoint->setParams($params);
  408.         $endpoint->setIndex($index);
  409.         $endpoint->setType($type);
  410.         $endpoint->setBody($body);
  411.         return $this->performRequest($endpoint);
  412.     }
  413.     /**
  414.      * Creates a new document in the index.Returns a 409 response when a document with a same ID already exists in the index.
  415.      *
  416.      * $params['id']                     = (string) Document ID (Required)
  417.      * $params['index']                  = (string) The name of the index (Required)
  418.      * $params['type']                   = DEPRECATED (string) The type of the document
  419.      * $params['wait_for_active_shards'] = (string) Sets the number of shard copies that must be active before proceeding with the index operation. Defaults to 1, meaning the primary shard only. Set to `all` for all shard copies, otherwise set to any non-negative value less than or equal to the total number of copies for the shard (number of replicas + 1)
  420.      * $params['refresh']                = (enum) If `true` then refresh the affected shards to make this operation visible to search, if `wait_for` then wait for a refresh to make this operation visible to search, if `false` (the default) then do nothing with refreshes. (Options = true,false,wait_for)
  421.      * $params['routing']                = (string) Specific routing value
  422.      * $params['timeout']                = (time) Explicit operation timeout
  423.      * $params['version']                = (number) Explicit version number for concurrency control
  424.      * $params['version_type']           = (enum) Specific version type (Options = internal,external,external_gte)
  425.      * $params['pipeline']               = (string) The pipeline id to preprocess incoming documents with
  426.      * $params['body']                   = (array) The document (Required)
  427.      *
  428.      * @param array $params Associative array of parameters
  429.      * @return array
  430.      * @see https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-index_.html
  431.      */
  432.     public function create(array $params = [])
  433.     {
  434.         $id $this->extractArgument($params'id');
  435.         $index $this->extractArgument($params'index');
  436.         $type $this->extractArgument($params'type');
  437.         $body $this->extractArgument($params'body');
  438.         $endpointBuilder $this->endpoints;
  439.         $endpoint $endpointBuilder('Create');
  440.         $endpoint->setParams($params);
  441.         $endpoint->setId($id);
  442.         $endpoint->setIndex($index);
  443.         $endpoint->setType($type);
  444.         $endpoint->setBody($body);
  445.         return $this->performRequest($endpoint);
  446.     }
  447.     /**
  448.      * Removes a document from the index.
  449.      *
  450.      * $params['id']                     = (string) The document ID (Required)
  451.      * $params['index']                  = (string) The name of the index (Required)
  452.      * $params['type']                   = DEPRECATED (string) The type of the document
  453.      * $params['wait_for_active_shards'] = (string) Sets the number of shard copies that must be active before proceeding with the delete operation. Defaults to 1, meaning the primary shard only. Set to `all` for all shard copies, otherwise set to any non-negative value less than or equal to the total number of copies for the shard (number of replicas + 1)
  454.      * $params['refresh']                = (enum) If `true` then refresh the affected shards to make this operation visible to search, if `wait_for` then wait for a refresh to make this operation visible to search, if `false` (the default) then do nothing with refreshes. (Options = true,false,wait_for)
  455.      * $params['routing']                = (string) Specific routing value
  456.      * $params['timeout']                = (time) Explicit operation timeout
  457.      * $params['if_seq_no']              = (number) only perform the delete operation if the last operation that has changed the document has the specified sequence number
  458.      * $params['if_primary_term']        = (number) only perform the delete operation if the last operation that has changed the document has the specified primary term
  459.      * $params['version']                = (number) Explicit version number for concurrency control
  460.      * $params['version_type']           = (enum) Specific version type (Options = internal,external,external_gte,force)
  461.      *
  462.      * @param array $params Associative array of parameters
  463.      * @return array
  464.      * @see https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-delete.html
  465.      */
  466.     public function delete(array $params = [])
  467.     {
  468.         $id $this->extractArgument($params'id');
  469.         $index $this->extractArgument($params'index');
  470.         $type $this->extractArgument($params'type');
  471.         $endpointBuilder $this->endpoints;
  472.         $endpoint $endpointBuilder('Delete');
  473.         $endpoint->setParams($params);
  474.         $endpoint->setId($id);
  475.         $endpoint->setIndex($index);
  476.         $endpoint->setType($type);
  477.         return $this->performRequest($endpoint);
  478.     }
  479.     /**
  480.      * Deletes documents matching the provided query.
  481.      *
  482.      * $params['index']                  = (list) A comma-separated list of index names to search; use `_all` or empty string to perform the operation on all indices (Required)
  483.      * $params['type']                   = DEPRECATED (list) A comma-separated list of document types to search; leave empty to perform the operation on all types
  484.      * $params['analyzer']               = (string) The analyzer to use for the query string
  485.      * $params['analyze_wildcard']       = (boolean) Specify whether wildcard and prefix queries should be analyzed (default: false)
  486.      * $params['default_operator']       = (enum) The default operator for query string query (AND or OR) (Options = AND,OR) (Default = OR)
  487.      * $params['df']                     = (string) The field to use as default where no field prefix is given in the query string
  488.      * $params['from']                   = (number) Starting offset (default: 0)
  489.      * $params['ignore_unavailable']     = (boolean) Whether specified concrete indices should be ignored when unavailable (missing or closed)
  490.      * $params['allow_no_indices']       = (boolean) Whether to ignore if a wildcard indices expression resolves into no concrete indices. (This includes `_all` string or when no indices have been specified)
  491.      * $params['conflicts']              = (enum) What to do when the delete by query hits version conflicts? (Options = abort,proceed) (Default = abort)
  492.      * $params['expand_wildcards']       = (enum) Whether to expand wildcard expression to concrete indices that are open, closed or both. (Options = open,closed,hidden,none,all) (Default = open)
  493.      * $params['lenient']                = (boolean) Specify whether format-based query failures (such as providing text to a numeric field) should be ignored
  494.      * $params['preference']             = (string) Specify the node or shard the operation should be performed on (default: random)
  495.      * $params['q']                      = (string) Query in the Lucene query string syntax
  496.      * $params['routing']                = (list) A comma-separated list of specific routing values
  497.      * $params['scroll']                 = (time) Specify how long a consistent view of the index should be maintained for scrolled search
  498.      * $params['search_type']            = (enum) Search operation type (Options = query_then_fetch,dfs_query_then_fetch)
  499.      * $params['search_timeout']         = (time) Explicit timeout for each search request. Defaults to no timeout.
  500.      * $params['size']                   = (number) Deprecated, please use `max_docs` instead
  501.      * $params['max_docs']               = (number) Maximum number of documents to process (default: all documents)
  502.      * $params['sort']                   = (list) A comma-separated list of <field>:<direction> pairs
  503.      * $params['terminate_after']        = (number) The maximum number of documents to collect for each shard, upon reaching which the query execution will terminate early.
  504.      * $params['stats']                  = (list) Specific 'tag' of the request for logging and statistical purposes
  505.      * $params['version']                = (boolean) Specify whether to return document version as part of a hit
  506.      * $params['request_cache']          = (boolean) Specify if request cache should be used for this request or not, defaults to index level setting
  507.      * $params['refresh']                = (boolean) Should the effected indexes be refreshed?
  508.      * $params['timeout']                = (time) Time each individual bulk request should wait for shards that are unavailable. (Default = 1m)
  509.      * $params['wait_for_active_shards'] = (string) Sets the number of shard copies that must be active before proceeding with the delete by query operation. Defaults to 1, meaning the primary shard only. Set to `all` for all shard copies, otherwise set to any non-negative value less than or equal to the total number of copies for the shard (number of replicas + 1)
  510.      * $params['scroll_size']            = (number) Size on the scroll request powering the delete by query (Default = 100)
  511.      * $params['wait_for_completion']    = (boolean) Should the request should block until the delete by query is complete. (Default = true)
  512.      * $params['requests_per_second']    = (number) The throttle for this request in sub-requests per second. -1 means no throttle. (Default = 0)
  513.      * $params['slices']                 = (number|string) The number of slices this task should be divided into. Defaults to 1, meaning the task isn't sliced into subtasks. Can be set to `auto`. (Default = 1)
  514.      * $params['body']                   = (array) The search definition using the Query DSL (Required)
  515.      *
  516.      * @param array $params Associative array of parameters
  517.      * @return array
  518.      * @see https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-delete-by-query.html
  519.      */
  520.     public function deleteByQuery(array $params = [])
  521.     {
  522.         $index $this->extractArgument($params'index');
  523.         $type $this->extractArgument($params'type');
  524.         $body $this->extractArgument($params'body');
  525.         $endpointBuilder $this->endpoints;
  526.         $endpoint $endpointBuilder('DeleteByQuery');
  527.         $endpoint->setParams($params);
  528.         $endpoint->setIndex($index);
  529.         $endpoint->setType($type);
  530.         $endpoint->setBody($body);
  531.         return $this->performRequest($endpoint);
  532.     }
  533.     /**
  534.      * Changes the number of requests per second for a particular Delete By Query operation.
  535.      *
  536.      * $params['task_id']             = (string) The task id to rethrottle
  537.      * $params['requests_per_second'] = (number) The throttle to set on this request in floating sub-requests per second. -1 means set no throttle. (Required)
  538.      *
  539.      * @param array $params Associative array of parameters
  540.      * @return array
  541.      * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-delete-by-query.html
  542.      */
  543.     public function deleteByQueryRethrottle(array $params = [])
  544.     {
  545.         $task_id $this->extractArgument($params'task_id');
  546.         $endpointBuilder $this->endpoints;
  547.         $endpoint $endpointBuilder('DeleteByQueryRethrottle');
  548.         $endpoint->setParams($params);
  549.         $endpoint->setTaskId($task_id);
  550.         return $this->performRequest($endpoint);
  551.     }
  552.     /**
  553.      * Deletes a script.
  554.      *
  555.      * $params['id']             = (string) Script ID
  556.      * $params['timeout']        = (time) Explicit operation timeout
  557.      * $params['master_timeout'] = (time) Specify timeout for connection to master
  558.      *
  559.      * @param array $params Associative array of parameters
  560.      * @return array
  561.      * @see https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-scripting.html
  562.      */
  563.     public function deleteScript(array $params = [])
  564.     {
  565.         $id $this->extractArgument($params'id');
  566.         $endpointBuilder $this->endpoints;
  567.         $endpoint $endpointBuilder('DeleteScript');
  568.         $endpoint->setParams($params);
  569.         $endpoint->setId($id);
  570.         return $this->performRequest($endpoint);
  571.     }
  572.     /**
  573.      * Returns information about whether a document exists in an index.
  574.      *
  575.      * $params['id']               = (string) The document ID (Required)
  576.      * $params['index']            = (string) The name of the index (Required)
  577.      * $params['type']             = DEPRECATED (string) The type of the document (use `_all` to fetch the first document matching the ID across all types)
  578.      * $params['stored_fields']    = (list) A comma-separated list of stored fields to return in the response
  579.      * $params['preference']       = (string) Specify the node or shard the operation should be performed on (default: random)
  580.      * $params['realtime']         = (boolean) Specify whether to perform the operation in realtime or search mode
  581.      * $params['refresh']          = (boolean) Refresh the shard containing the document before performing the operation
  582.      * $params['routing']          = (string) Specific routing value
  583.      * $params['_source']          = (list) True or false to return the _source field or not, or a list of fields to return
  584.      * $params['_source_excludes'] = (list) A list of fields to exclude from the returned _source field
  585.      * $params['_source_includes'] = (list) A list of fields to extract and return from the _source field
  586.      * $params['version']          = (number) Explicit version number for concurrency control
  587.      * $params['version_type']     = (enum) Specific version type (Options = internal,external,external_gte,force)
  588.      *
  589.      * @param array $params Associative array of parameters
  590.      * @return bool
  591.      * @see https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-get.html
  592.      */
  593.     public function exists(array $params = []): bool
  594.     {
  595.         $id $this->extractArgument($params'id');
  596.         $index $this->extractArgument($params'index');
  597.         $type $this->extractArgument($params'type');
  598.         // manually make this verbose so we can check status code
  599.         $params['client']['verbose'] = true;
  600.         $endpointBuilder $this->endpoints;
  601.         $endpoint $endpointBuilder('Exists');
  602.         $endpoint->setParams($params);
  603.         $endpoint->setId($id);
  604.         $endpoint->setIndex($index);
  605.         $endpoint->setType($type);
  606.         return BooleanRequestWrapper::performRequest($endpoint$this->transport);
  607.     }
  608.     /**
  609.      * Returns information about whether a document source exists in an index.
  610.      *
  611.      * $params['id']               = (string) The document ID (Required)
  612.      * $params['index']            = (string) The name of the index (Required)
  613.      * $params['type']             = DEPRECATED (string) The type of the document; deprecated and optional starting with 7.0
  614.      * $params['preference']       = (string) Specify the node or shard the operation should be performed on (default: random)
  615.      * $params['realtime']         = (boolean) Specify whether to perform the operation in realtime or search mode
  616.      * $params['refresh']          = (boolean) Refresh the shard containing the document before performing the operation
  617.      * $params['routing']          = (string) Specific routing value
  618.      * $params['_source']          = (list) True or false to return the _source field or not, or a list of fields to return
  619.      * $params['_source_excludes'] = (list) A list of fields to exclude from the returned _source field
  620.      * $params['_source_includes'] = (list) A list of fields to extract and return from the _source field
  621.      * $params['version']          = (number) Explicit version number for concurrency control
  622.      * $params['version_type']     = (enum) Specific version type (Options = internal,external,external_gte,force)
  623.      *
  624.      * @param array $params Associative array of parameters
  625.      * @return bool
  626.      * @see https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-get.html
  627.      */
  628.     public function existsSource(array $params = []): bool
  629.     {
  630.         $id $this->extractArgument($params'id');
  631.         $index $this->extractArgument($params'index');
  632.         $type $this->extractArgument($params'type');
  633.         // manually make this verbose so we can check status code
  634.         $params['client']['verbose'] = true;
  635.         $endpointBuilder $this->endpoints;
  636.         $endpoint $endpointBuilder('ExistsSource');
  637.         $endpoint->setParams($params);
  638.         $endpoint->setId($id);
  639.         $endpoint->setIndex($index);
  640.         $endpoint->setType($type);
  641.         return BooleanRequestWrapper::performRequest($endpoint$this->transport);
  642.     }
  643.     /**
  644.      * Returns information about why a specific matches (or doesn't match) a query.
  645.      *
  646.      * $params['id']               = (string) The document ID (Required)
  647.      * $params['index']            = (string) The name of the index (Required)
  648.      * $params['type']             = DEPRECATED (string) The type of the document
  649.      * $params['analyze_wildcard'] = (boolean) Specify whether wildcards and prefix queries in the query string query should be analyzed (default: false)
  650.      * $params['analyzer']         = (string) The analyzer for the query string query
  651.      * $params['default_operator'] = (enum) The default operator for query string query (AND or OR) (Options = AND,OR) (Default = OR)
  652.      * $params['df']               = (string) The default field for query string query (default: _all)
  653.      * $params['stored_fields']    = (list) A comma-separated list of stored fields to return in the response
  654.      * $params['lenient']          = (boolean) Specify whether format-based query failures (such as providing text to a numeric field) should be ignored
  655.      * $params['preference']       = (string) Specify the node or shard the operation should be performed on (default: random)
  656.      * $params['q']                = (string) Query in the Lucene query string syntax
  657.      * $params['routing']          = (string) Specific routing value
  658.      * $params['_source']          = (list) True or false to return the _source field or not, or a list of fields to return
  659.      * $params['_source_excludes'] = (list) A list of fields to exclude from the returned _source field
  660.      * $params['_source_includes'] = (list) A list of fields to extract and return from the _source field
  661.      * $params['body']             = (array) The query definition using the Query DSL
  662.      *
  663.      * @param array $params Associative array of parameters
  664.      * @return array
  665.      * @see https://www.elastic.co/guide/en/elasticsearch/reference/master/search-explain.html
  666.      */
  667.     public function explain(array $params = [])
  668.     {
  669.         $id $this->extractArgument($params'id');
  670.         $index $this->extractArgument($params'index');
  671.         $type $this->extractArgument($params'type');
  672.         $body $this->extractArgument($params'body');
  673.         $endpointBuilder $this->endpoints;
  674.         $endpoint $endpointBuilder('Explain');
  675.         $endpoint->setParams($params);
  676.         $endpoint->setId($id);
  677.         $endpoint->setIndex($index);
  678.         $endpoint->setType($type);
  679.         $endpoint->setBody($body);
  680.         return $this->performRequest($endpoint);
  681.     }
  682.     /**
  683.      * Returns the information about the capabilities of fields among multiple indices.
  684.      *
  685.      * $params['index']              = (list) A comma-separated list of index names; use `_all` or empty string to perform the operation on all indices
  686.      * $params['fields']             = (list) A comma-separated list of field names
  687.      * $params['ignore_unavailable'] = (boolean) Whether specified concrete indices should be ignored when unavailable (missing or closed)
  688.      * $params['allow_no_indices']   = (boolean) Whether to ignore if a wildcard indices expression resolves into no concrete indices. (This includes `_all` string or when no indices have been specified)
  689.      * $params['expand_wildcards']   = (enum) Whether to expand wildcard expression to concrete indices that are open, closed or both. (Options = open,closed,hidden,none,all) (Default = open)
  690.      * $params['include_unmapped']   = (boolean) Indicates whether unmapped fields should be included in the response. (Default = false)
  691.      * $params['body']               = (array) An index filter specified with the Query DSL
  692.      *
  693.      * @param array $params Associative array of parameters
  694.      * @return array
  695.      * @see https://www.elastic.co/guide/en/elasticsearch/reference/master/search-field-caps.html
  696.      */
  697.     public function fieldCaps(array $params = [])
  698.     {
  699.         $index $this->extractArgument($params'index');
  700.         $body $this->extractArgument($params'body');
  701.         $endpointBuilder $this->endpoints;
  702.         $endpoint $endpointBuilder('FieldCaps');
  703.         $endpoint->setParams($params);
  704.         $endpoint->setIndex($index);
  705.         $endpoint->setBody($body);
  706.         return $this->performRequest($endpoint);
  707.     }
  708.     /**
  709.      * Returns a document.
  710.      *
  711.      * $params['id']               = (string) The document ID (Required)
  712.      * $params['index']            = (string) The name of the index (Required)
  713.      * $params['type']             = DEPRECATED (string) The type of the document (use `_all` to fetch the first document matching the ID across all types)
  714.      * $params['stored_fields']    = (list) A comma-separated list of stored fields to return in the response
  715.      * $params['preference']       = (string) Specify the node or shard the operation should be performed on (default: random)
  716.      * $params['realtime']         = (boolean) Specify whether to perform the operation in realtime or search mode
  717.      * $params['refresh']          = (boolean) Refresh the shard containing the document before performing the operation
  718.      * $params['routing']          = (string) Specific routing value
  719.      * $params['_source']          = (list) True or false to return the _source field or not, or a list of fields to return
  720.      * $params['_source_excludes'] = (list) A list of fields to exclude from the returned _source field
  721.      * $params['_source_includes'] = (list) A list of fields to extract and return from the _source field
  722.      * $params['version']          = (number) Explicit version number for concurrency control
  723.      * $params['version_type']     = (enum) Specific version type (Options = internal,external,external_gte,force)
  724.      *
  725.      * @param array $params Associative array of parameters
  726.      * @return array
  727.      * @see https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-get.html
  728.      */
  729.     public function get(array $params = [])
  730.     {
  731.         $id $this->extractArgument($params'id');
  732.         $index $this->extractArgument($params'index');
  733.         $type $this->extractArgument($params'type');
  734.         $endpointBuilder $this->endpoints;
  735.         $endpoint $endpointBuilder('Get');
  736.         $endpoint->setParams($params);
  737.         $endpoint->setId($id);
  738.         $endpoint->setIndex($index);
  739.         $endpoint->setType($type);
  740.         return $this->performRequest($endpoint);
  741.     }
  742.     /**
  743.      * Returns a script.
  744.      *
  745.      * $params['id']             = (string) Script ID
  746.      * $params['master_timeout'] = (time) Specify timeout for connection to master
  747.      *
  748.      * @param array $params Associative array of parameters
  749.      * @return array
  750.      * @see https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-scripting.html
  751.      */
  752.     public function getScript(array $params = [])
  753.     {
  754.         $id $this->extractArgument($params'id');
  755.         $endpointBuilder $this->endpoints;
  756.         $endpoint $endpointBuilder('GetScript');
  757.         $endpoint->setParams($params);
  758.         $endpoint->setId($id);
  759.         return $this->performRequest($endpoint);
  760.     }
  761.     /**
  762.      * Returns all script contexts.
  763.      *
  764.      *
  765.      * @param array $params Associative array of parameters
  766.      * @return array
  767.      * @see https://www.elastic.co/guide/en/elasticsearch/painless/master/painless-contexts.html
  768.      */
  769.     public function getScriptContext(array $params = [])
  770.     {
  771.         $endpointBuilder $this->endpoints;
  772.         $endpoint $endpointBuilder('GetScriptContext');
  773.         $endpoint->setParams($params);
  774.         return $this->performRequest($endpoint);
  775.     }
  776.     /**
  777.      * Returns available script types, languages and contexts
  778.      *
  779.      *
  780.      * @param array $params Associative array of parameters
  781.      * @return array
  782.      * @see https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-scripting.html
  783.      */
  784.     public function getScriptLanguages(array $params = [])
  785.     {
  786.         $endpointBuilder $this->endpoints;
  787.         $endpoint $endpointBuilder('GetScriptLanguages');
  788.         $endpoint->setParams($params);
  789.         return $this->performRequest($endpoint);
  790.     }
  791.     /**
  792.      * Returns the source of a document.
  793.      *
  794.      * $params['id']               = (string) The document ID (Required)
  795.      * $params['index']            = (string) The name of the index (Required)
  796.      * $params['type']             = DEPRECATED (string) The type of the document; deprecated and optional starting with 7.0
  797.      * $params['preference']       = (string) Specify the node or shard the operation should be performed on (default: random)
  798.      * $params['realtime']         = (boolean) Specify whether to perform the operation in realtime or search mode
  799.      * $params['refresh']          = (boolean) Refresh the shard containing the document before performing the operation
  800.      * $params['routing']          = (string) Specific routing value
  801.      * $params['_source']          = (list) True or false to return the _source field or not, or a list of fields to return
  802.      * $params['_source_excludes'] = (list) A list of fields to exclude from the returned _source field
  803.      * $params['_source_includes'] = (list) A list of fields to extract and return from the _source field
  804.      * $params['version']          = (number) Explicit version number for concurrency control
  805.      * $params['version_type']     = (enum) Specific version type (Options = internal,external,external_gte,force)
  806.      *
  807.      * @param array $params Associative array of parameters
  808.      * @return array
  809.      * @see https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-get.html
  810.      */
  811.     public function getSource(array $params = [])
  812.     {
  813.         $id $this->extractArgument($params'id');
  814.         $index $this->extractArgument($params'index');
  815.         $type $this->extractArgument($params'type');
  816.         $endpointBuilder $this->endpoints;
  817.         $endpoint $endpointBuilder('GetSource');
  818.         $endpoint->setParams($params);
  819.         $endpoint->setId($id);
  820.         $endpoint->setIndex($index);
  821.         $endpoint->setType($type);
  822.         return $this->performRequest($endpoint);
  823.     }
  824.     /**
  825.      * Creates or updates a document in an index.
  826.      *
  827.      * $params['id']                     = (string) Document ID
  828.      * $params['index']                  = (string) The name of the index (Required)
  829.      * $params['type']                   = DEPRECATED (string) The type of the document
  830.      * $params['wait_for_active_shards'] = (string) Sets the number of shard copies that must be active before proceeding with the index operation. Defaults to 1, meaning the primary shard only. Set to `all` for all shard copies, otherwise set to any non-negative value less than or equal to the total number of copies for the shard (number of replicas + 1)
  831.      * $params['op_type']                = (enum) Explicit operation type. Defaults to `index` for requests with an explicit document ID, and to `create`for requests without an explicit document ID (Options = index,create)
  832.      * $params['refresh']                = (enum) If `true` then refresh the affected shards to make this operation visible to search, if `wait_for` then wait for a refresh to make this operation visible to search, if `false` (the default) then do nothing with refreshes. (Options = true,false,wait_for)
  833.      * $params['routing']                = (string) Specific routing value
  834.      * $params['timeout']                = (time) Explicit operation timeout
  835.      * $params['version']                = (number) Explicit version number for concurrency control
  836.      * $params['version_type']           = (enum) Specific version type (Options = internal,external,external_gte)
  837.      * $params['if_seq_no']              = (number) only perform the index operation if the last operation that has changed the document has the specified sequence number
  838.      * $params['if_primary_term']        = (number) only perform the index operation if the last operation that has changed the document has the specified primary term
  839.      * $params['pipeline']               = (string) The pipeline id to preprocess incoming documents with
  840.      * $params['require_alias']          = (boolean) When true, requires destination to be an alias. Default is false
  841.      * $params['body']                   = (array) The document (Required)
  842.      *
  843.      * @param array $params Associative array of parameters
  844.      * @return array
  845.      * @see https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-index_.html
  846.      */
  847.     public function index(array $params = [])
  848.     {
  849.         $id $this->extractArgument($params'id');
  850.         $index $this->extractArgument($params'index');
  851.         $type $this->extractArgument($params'type');
  852.         $body $this->extractArgument($params'body');
  853.         $endpointBuilder $this->endpoints;
  854.         $endpoint $endpointBuilder('Index');
  855.         $endpoint->setParams($params);
  856.         $endpoint->setId($id);
  857.         $endpoint->setIndex($index);
  858.         $endpoint->setType($type);
  859.         $endpoint->setBody($body);
  860.         return $this->performRequest($endpoint);
  861.     }
  862.     /**
  863.      * Returns basic information about the cluster.
  864.      *
  865.      *
  866.      * @param array $params Associative array of parameters
  867.      * @return array
  868.      * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
  869.      */
  870.     public function info(array $params = [])
  871.     {
  872.         $endpointBuilder $this->endpoints;
  873.         $endpoint $endpointBuilder('Info');
  874.         $endpoint->setParams($params);
  875.         return $this->performRequest($endpoint);
  876.     }
  877.     /**
  878.      * Allows to get multiple documents in one request.
  879.      *
  880.      * $params['index']            = (string) The name of the index
  881.      * $params['type']             = DEPRECATED (string) The type of the document
  882.      * $params['stored_fields']    = (list) A comma-separated list of stored fields to return in the response
  883.      * $params['preference']       = (string) Specify the node or shard the operation should be performed on (default: random)
  884.      * $params['realtime']         = (boolean) Specify whether to perform the operation in realtime or search mode
  885.      * $params['refresh']          = (boolean) Refresh the shard containing the document before performing the operation
  886.      * $params['routing']          = (string) Specific routing value
  887.      * $params['_source']          = (list) True or false to return the _source field or not, or a list of fields to return
  888.      * $params['_source_excludes'] = (list) A list of fields to exclude from the returned _source field
  889.      * $params['_source_includes'] = (list) A list of fields to extract and return from the _source field
  890.      * $params['body']             = (array) Document identifiers; can be either `docs` (containing full document information) or `ids` (when index and type is provided in the URL. (Required)
  891.      *
  892.      * @param array $params Associative array of parameters
  893.      * @return array
  894.      * @see https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-multi-get.html
  895.      */
  896.     public function mget(array $params = [])
  897.     {
  898.         $index $this->extractArgument($params'index');
  899.         $type $this->extractArgument($params'type');
  900.         $body $this->extractArgument($params'body');
  901.         $endpointBuilder $this->endpoints;
  902.         $endpoint $endpointBuilder('Mget');
  903.         $endpoint->setParams($params);
  904.         $endpoint->setIndex($index);
  905.         $endpoint->setType($type);
  906.         $endpoint->setBody($body);
  907.         return $this->performRequest($endpoint);
  908.     }
  909.     /**
  910.      * Allows to execute several search operations in one request.
  911.      *
  912.      * $params['index']                         = (list) A comma-separated list of index names to use as default
  913.      * $params['type']                          = DEPRECATED (list) A comma-separated list of document types to use as default
  914.      * $params['search_type']                   = (enum) Search operation type (Options = query_then_fetch,dfs_query_then_fetch)
  915.      * $params['max_concurrent_searches']       = (number) Controls the maximum number of concurrent searches the multi search api will execute
  916.      * $params['typed_keys']                    = (boolean) Specify whether aggregation and suggester names should be prefixed by their respective types in the response
  917.      * $params['pre_filter_shard_size']         = (number) A threshold that enforces a pre-filter roundtrip to prefilter search shards based on query rewriting if the number of shards the search request expands to exceeds the threshold. This filter roundtrip can limit the number of shards significantly if for instance a shard can not match any documents based on its rewrite method ie. if date filters are mandatory to match but the shard bounds and the query are disjoint.
  918.      * $params['max_concurrent_shard_requests'] = (number) The number of concurrent shard requests each sub search executes concurrently per node. This value should be used to limit the impact of the search on the cluster in order to limit the number of concurrent shard requests (Default = 5)
  919.      * $params['rest_total_hits_as_int']        = (boolean) Indicates whether hits.total should be rendered as an integer or an object in the rest search response (Default = false)
  920.      * $params['ccs_minimize_roundtrips']       = (boolean) Indicates whether network round-trips should be minimized as part of cross-cluster search requests execution (Default = true)
  921.      * $params['body']                          = (array) The request definitions (metadata-search request definition pairs), separated by newlines (Required)
  922.      *
  923.      * @param array $params Associative array of parameters
  924.      * @return array
  925.      * @see https://www.elastic.co/guide/en/elasticsearch/reference/master/search-multi-search.html
  926.      */
  927.     public function msearch(array $params = [])
  928.     {
  929.         $index $this->extractArgument($params'index');
  930.         $type $this->extractArgument($params'type');
  931.         $body $this->extractArgument($params'body');
  932.         $endpointBuilder $this->endpoints;
  933.         $endpoint $endpointBuilder('Msearch');
  934.         $endpoint->setParams($params);
  935.         $endpoint->setIndex($index);
  936.         $endpoint->setType($type);
  937.         $endpoint->setBody($body);
  938.         return $this->performRequest($endpoint);
  939.     }
  940.     /**
  941.      * Allows to execute several search template operations in one request.
  942.      *
  943.      * $params['index']                   = (list) A comma-separated list of index names to use as default
  944.      * $params['type']                    = DEPRECATED (list) A comma-separated list of document types to use as default
  945.      * $params['search_type']             = (enum) Search operation type (Options = query_then_fetch,dfs_query_then_fetch)
  946.      * $params['typed_keys']              = (boolean) Specify whether aggregation and suggester names should be prefixed by their respective types in the response
  947.      * $params['max_concurrent_searches'] = (number) Controls the maximum number of concurrent searches the multi search api will execute
  948.      * $params['rest_total_hits_as_int']  = (boolean) Indicates whether hits.total should be rendered as an integer or an object in the rest search response (Default = false)
  949.      * $params['ccs_minimize_roundtrips'] = (boolean) Indicates whether network round-trips should be minimized as part of cross-cluster search requests execution (Default = true)
  950.      * $params['body']                    = (array) The request definitions (metadata-search request definition pairs), separated by newlines (Required)
  951.      *
  952.      * @param array $params Associative array of parameters
  953.      * @return array
  954.      * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/search-multi-search.html
  955.      */
  956.     public function msearchTemplate(array $params = [])
  957.     {
  958.         $index $this->extractArgument($params'index');
  959.         $type $this->extractArgument($params'type');
  960.         $body $this->extractArgument($params'body');
  961.         $endpointBuilder $this->endpoints;
  962.         $endpoint $endpointBuilder('MsearchTemplate');
  963.         $endpoint->setParams($params);
  964.         $endpoint->setIndex($index);
  965.         $endpoint->setType($type);
  966.         $endpoint->setBody($body);
  967.         return $this->performRequest($endpoint);
  968.     }
  969.     /**
  970.      * Returns multiple termvectors in one request.
  971.      *
  972.      * $params['index']            = (string) The index in which the document resides.
  973.      * $params['type']             = DEPRECATED (string) The type of the document.
  974.      * $params['ids']              = (list) A comma-separated list of documents ids. You must define ids as parameter or set "ids" or "docs" in the request body
  975.      * $params['term_statistics']  = (boolean) Specifies if total term frequency and document frequency should be returned. Applies to all returned documents unless otherwise specified in body "params" or "docs". (Default = false)
  976.      * $params['field_statistics'] = (boolean) Specifies if document count, sum of document frequencies and sum of total term frequencies should be returned. Applies to all returned documents unless otherwise specified in body "params" or "docs". (Default = true)
  977.      * $params['fields']           = (list) A comma-separated list of fields to return. Applies to all returned documents unless otherwise specified in body "params" or "docs".
  978.      * $params['offsets']          = (boolean) Specifies if term offsets should be returned. Applies to all returned documents unless otherwise specified in body "params" or "docs". (Default = true)
  979.      * $params['positions']        = (boolean) Specifies if term positions should be returned. Applies to all returned documents unless otherwise specified in body "params" or "docs". (Default = true)
  980.      * $params['payloads']         = (boolean) Specifies if term payloads should be returned. Applies to all returned documents unless otherwise specified in body "params" or "docs". (Default = true)
  981.      * $params['preference']       = (string) Specify the node or shard the operation should be performed on (default: random) .Applies to all returned documents unless otherwise specified in body "params" or "docs".
  982.      * $params['routing']          = (string) Specific routing value. Applies to all returned documents unless otherwise specified in body "params" or "docs".
  983.      * $params['realtime']         = (boolean) Specifies if requests are real-time as opposed to near-real-time (default: true).
  984.      * $params['version']          = (number) Explicit version number for concurrency control
  985.      * $params['version_type']     = (enum) Specific version type (Options = internal,external,external_gte,force)
  986.      * $params['body']             = (array) Define ids, documents, parameters or a list of parameters per document here. You must at least provide a list of document ids. See documentation.
  987.      *
  988.      * @param array $params Associative array of parameters
  989.      * @return array
  990.      * @see https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-multi-termvectors.html
  991.      */
  992.     public function mtermvectors(array $params = [])
  993.     {
  994.         $index $this->extractArgument($params'index');
  995.         $type $this->extractArgument($params'type');
  996.         $body $this->extractArgument($params'body');
  997.         $endpointBuilder $this->endpoints;
  998.         $endpoint $endpointBuilder('MTermVectors');
  999.         $endpoint->setParams($params);
  1000.         $endpoint->setIndex($index);
  1001.         $endpoint->setType($type);
  1002.         $endpoint->setBody($body);
  1003.         return $this->performRequest($endpoint);
  1004.     }
  1005.     /**
  1006.      * Open a point in time that can be used in subsequent searches
  1007.      *
  1008.      * $params['index']              = (list) A comma-separated list of index names to open point in time; use `_all` or empty string to perform the operation on all indices
  1009.      * $params['preference']         = (string) Specify the node or shard the operation should be performed on (default: random)
  1010.      * $params['routing']            = (string) Specific routing value
  1011.      * $params['ignore_unavailable'] = (boolean) Whether specified concrete indices should be ignored when unavailable (missing or closed)
  1012.      * $params['expand_wildcards']   = (enum) Whether to expand wildcard expression to concrete indices that are open, closed or both. (Options = open,closed,hidden,none,all) (Default = open)
  1013.      * $params['keep_alive']         = (string) Specific the time to live for the point in time (Required)
  1014.      *
  1015.      * @param array $params Associative array of parameters
  1016.      * @return array
  1017.      * @see https://www.elastic.co/guide/en/elasticsearch/reference/master/point-in-time-api.html
  1018.      */
  1019.     public function openPointInTime(array $params = [])
  1020.     {
  1021.         $index $this->extractArgument($params'index');
  1022.         $endpointBuilder $this->endpoints;
  1023.         $endpoint $endpointBuilder('OpenPointInTime');
  1024.         $endpoint->setParams($params);
  1025.         $endpoint->setIndex($index);
  1026.         return $this->performRequest($endpoint);
  1027.     }
  1028.     /**
  1029.      * Returns whether the cluster is running.
  1030.      *
  1031.      *
  1032.      * @param array $params Associative array of parameters
  1033.      * @return bool
  1034.      * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
  1035.      */
  1036.     public function ping(array $params = []): bool
  1037.     {
  1038.         // manually make this verbose so we can check status code
  1039.         $params['client']['verbose'] = true;
  1040.         $endpointBuilder $this->endpoints;
  1041.         $endpoint $endpointBuilder('Ping');
  1042.         $endpoint->setParams($params);
  1043.         return BooleanRequestWrapper::performRequest($endpoint$this->transport);
  1044.     }
  1045.     /**
  1046.      * Creates or updates a script.
  1047.      *
  1048.      * $params['id']             = (string) Script ID (Required)
  1049.      * $params['context']        = (string) Script context
  1050.      * $params['timeout']        = (time) Explicit operation timeout
  1051.      * $params['master_timeout'] = (time) Specify timeout for connection to master
  1052.      * $params['body']           = (array) The document (Required)
  1053.      *
  1054.      * @param array $params Associative array of parameters
  1055.      * @return array
  1056.      * @see https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-scripting.html
  1057.      */
  1058.     public function putScript(array $params = [])
  1059.     {
  1060.         $id $this->extractArgument($params'id');
  1061.         $context $this->extractArgument($params'context');
  1062.         $body $this->extractArgument($params'body');
  1063.         $endpointBuilder $this->endpoints;
  1064.         $endpoint $endpointBuilder('PutScript');
  1065.         $endpoint->setParams($params);
  1066.         $endpoint->setId($id);
  1067.         $endpoint->setContext($context);
  1068.         $endpoint->setBody($body);
  1069.         return $this->performRequest($endpoint);
  1070.     }
  1071.     /**
  1072.      * Allows to evaluate the quality of ranked search results over a set of typical search queries
  1073.      *
  1074.      * $params['index']              = (list) A comma-separated list of index names to search; use `_all` or empty string to perform the operation on all indices
  1075.      * $params['ignore_unavailable'] = (boolean) Whether specified concrete indices should be ignored when unavailable (missing or closed)
  1076.      * $params['allow_no_indices']   = (boolean) Whether to ignore if a wildcard indices expression resolves into no concrete indices. (This includes `_all` string or when no indices have been specified)
  1077.      * $params['expand_wildcards']   = (enum) Whether to expand wildcard expression to concrete indices that are open, closed or both. (Options = open,closed,hidden,none,all) (Default = open)
  1078.      * $params['search_type']        = (enum) Search operation type (Options = query_then_fetch,dfs_query_then_fetch)
  1079.      * $params['body']               = (array) The ranking evaluation search definition, including search requests, document ratings and ranking metric definition. (Required)
  1080.      *
  1081.      * @param array $params Associative array of parameters
  1082.      * @return array
  1083.      * @see https://www.elastic.co/guide/en/elasticsearch/reference/master/search-rank-eval.html
  1084.      */
  1085.     public function rankEval(array $params = [])
  1086.     {
  1087.         $index $this->extractArgument($params'index');
  1088.         $body $this->extractArgument($params'body');
  1089.         $endpointBuilder $this->endpoints;
  1090.         $endpoint $endpointBuilder('RankEval');
  1091.         $endpoint->setParams($params);
  1092.         $endpoint->setIndex($index);
  1093.         $endpoint->setBody($body);
  1094.         return $this->performRequest($endpoint);
  1095.     }
  1096.     /**
  1097.      * Allows to copy documents from one index to another, optionally filtering the sourcedocuments by a query, changing the destination index settings, or fetching thedocuments from a remote cluster.
  1098.      *
  1099.      * $params['refresh']                = (boolean) Should the affected indexes be refreshed?
  1100.      * $params['timeout']                = (time) Time each individual bulk request should wait for shards that are unavailable. (Default = 1m)
  1101.      * $params['wait_for_active_shards'] = (string) Sets the number of shard copies that must be active before proceeding with the reindex operation. Defaults to 1, meaning the primary shard only. Set to `all` for all shard copies, otherwise set to any non-negative value less than or equal to the total number of copies for the shard (number of replicas + 1)
  1102.      * $params['wait_for_completion']    = (boolean) Should the request should block until the reindex is complete. (Default = true)
  1103.      * $params['requests_per_second']    = (number) The throttle to set on this request in sub-requests per second. -1 means no throttle. (Default = 0)
  1104.      * $params['scroll']                 = (time) Control how long to keep the search context alive (Default = 5m)
  1105.      * $params['slices']                 = (number|string) The number of slices this task should be divided into. Defaults to 1, meaning the task isn't sliced into subtasks. Can be set to `auto`. (Default = 1)
  1106.      * $params['max_docs']               = (number) Maximum number of documents to process (default: all documents)
  1107.      * $params['body']                   = (array) The search definition using the Query DSL and the prototype for the index request. (Required)
  1108.      *
  1109.      * @param array $params Associative array of parameters
  1110.      * @return array
  1111.      * @see https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-reindex.html
  1112.      */
  1113.     public function reindex(array $params = [])
  1114.     {
  1115.         $body $this->extractArgument($params'body');
  1116.         $endpointBuilder $this->endpoints;
  1117.         $endpoint $endpointBuilder('Reindex');
  1118.         $endpoint->setParams($params);
  1119.         $endpoint->setBody($body);
  1120.         return $this->performRequest($endpoint);
  1121.     }
  1122.     /**
  1123.      * Changes the number of requests per second for a particular Reindex operation.
  1124.      *
  1125.      * $params['task_id']             = (string) The task id to rethrottle
  1126.      * $params['requests_per_second'] = (number) The throttle to set on this request in floating sub-requests per second. -1 means set no throttle. (Required)
  1127.      *
  1128.      * @param array $params Associative array of parameters
  1129.      * @return array
  1130.      * @see https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-reindex.html
  1131.      */
  1132.     public function reindexRethrottle(array $params = [])
  1133.     {
  1134.         $task_id $this->extractArgument($params'task_id');
  1135.         $endpointBuilder $this->endpoints;
  1136.         $endpoint $endpointBuilder('ReindexRethrottle');
  1137.         $endpoint->setParams($params);
  1138.         $endpoint->setTaskId($task_id);
  1139.         return $this->performRequest($endpoint);
  1140.     }
  1141.     /**
  1142.      * Allows to use the Mustache language to pre-render a search definition.
  1143.      *
  1144.      * $params['id']   = (string) The id of the stored search template
  1145.      * $params['body'] = (array) The search definition template and its params
  1146.      *
  1147.      * @param array $params Associative array of parameters
  1148.      * @return array
  1149.      * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/render-search-template-api.html
  1150.      */
  1151.     public function renderSearchTemplate(array $params = [])
  1152.     {
  1153.         $id $this->extractArgument($params'id');
  1154.         $body $this->extractArgument($params'body');
  1155.         $endpointBuilder $this->endpoints;
  1156.         $endpoint $endpointBuilder('RenderSearchTemplate');
  1157.         $endpoint->setParams($params);
  1158.         $endpoint->setId($id);
  1159.         $endpoint->setBody($body);
  1160.         return $this->performRequest($endpoint);
  1161.     }
  1162.     /**
  1163.      * Allows an arbitrary script to be executed and a result to be returned
  1164.      *
  1165.      * $params['body'] = (array) The script to execute
  1166.      *
  1167.      * @param array $params Associative array of parameters
  1168.      * @return array
  1169.      * @see https://www.elastic.co/guide/en/elasticsearch/painless/master/painless-execute-api.html
  1170.      *
  1171.      * @note This API is EXPERIMENTAL and may be changed or removed completely in a future release
  1172.      *
  1173.      */
  1174.     public function scriptsPainlessExecute(array $params = [])
  1175.     {
  1176.         $body $this->extractArgument($params'body');
  1177.         $endpointBuilder $this->endpoints;
  1178.         $endpoint $endpointBuilder('ScriptsPainlessExecute');
  1179.         $endpoint->setParams($params);
  1180.         $endpoint->setBody($body);
  1181.         return $this->performRequest($endpoint);
  1182.     }
  1183.     /**
  1184.      * Allows to retrieve a large numbers of results from a single search request.
  1185.      *
  1186.      * $params['scroll_id']              = DEPRECATED (string) The scroll ID
  1187.      * $params['scroll']                 = (time) Specify how long a consistent view of the index should be maintained for scrolled search
  1188.      * $params['rest_total_hits_as_int'] = (boolean) Indicates whether hits.total should be rendered as an integer or an object in the rest search response (Default = false)
  1189.      * $params['body']                   = (array) The scroll ID if not passed by URL or query parameter.
  1190.      *
  1191.      * @param array $params Associative array of parameters
  1192.      * @return array
  1193.      * @see https://www.elastic.co/guide/en/elasticsearch/reference/master/search-request-body.html#request-body-search-scroll
  1194.      */
  1195.     public function scroll(array $params = [])
  1196.     {
  1197.         $scroll_id $this->extractArgument($params'scroll_id');
  1198.         $body $this->extractArgument($params'body');
  1199.         $endpointBuilder $this->endpoints;
  1200.         $endpoint $endpointBuilder('Scroll');
  1201.         $endpoint->setParams($params);
  1202.         $endpoint->setScrollId($scroll_id);
  1203.         $endpoint->setBody($body);
  1204.         return $this->performRequest($endpoint);
  1205.     }
  1206.     /**
  1207.      * Returns results matching a query.
  1208.      *
  1209.      * $params['index']                         = (list) A comma-separated list of index names to search; use `_all` or empty string to perform the operation on all indices
  1210.      * $params['type']                          = DEPRECATED (list) A comma-separated list of document types to search; leave empty to perform the operation on all types
  1211.      * $params['analyzer']                      = (string) The analyzer to use for the query string
  1212.      * $params['analyze_wildcard']              = (boolean) Specify whether wildcard and prefix queries should be analyzed (default: false)
  1213.      * $params['ccs_minimize_roundtrips']       = (boolean) Indicates whether network round-trips should be minimized as part of cross-cluster search requests execution (Default = true)
  1214.      * $params['default_operator']              = (enum) The default operator for query string query (AND or OR) (Options = AND,OR) (Default = OR)
  1215.      * $params['df']                            = (string) The field to use as default where no field prefix is given in the query string
  1216.      * $params['explain']                       = (boolean) Specify whether to return detailed information about score computation as part of a hit
  1217.      * $params['stored_fields']                 = (list) A comma-separated list of stored fields to return as part of a hit
  1218.      * $params['docvalue_fields']               = (list) A comma-separated list of fields to return as the docvalue representation of a field for each hit
  1219.      * $params['from']                          = (number) Starting offset (default: 0)
  1220.      * $params['ignore_unavailable']            = (boolean) Whether specified concrete indices should be ignored when unavailable (missing or closed)
  1221.      * $params['ignore_throttled']              = (boolean) Whether specified concrete, expanded or aliased indices should be ignored when throttled
  1222.      * $params['allow_no_indices']              = (boolean) Whether to ignore if a wildcard indices expression resolves into no concrete indices. (This includes `_all` string or when no indices have been specified)
  1223.      * $params['expand_wildcards']              = (enum) Whether to expand wildcard expression to concrete indices that are open, closed or both. (Options = open,closed,hidden,none,all) (Default = open)
  1224.      * $params['lenient']                       = (boolean) Specify whether format-based query failures (such as providing text to a numeric field) should be ignored
  1225.      * $params['preference']                    = (string) Specify the node or shard the operation should be performed on (default: random)
  1226.      * $params['q']                             = (string) Query in the Lucene query string syntax
  1227.      * $params['routing']                       = (list) A comma-separated list of specific routing values
  1228.      * $params['scroll']                        = (time) Specify how long a consistent view of the index should be maintained for scrolled search
  1229.      * $params['search_type']                   = (enum) Search operation type (Options = query_then_fetch,dfs_query_then_fetch)
  1230.      * $params['size']                          = (number) Number of hits to return (default: 10)
  1231.      * $params['sort']                          = (list) A comma-separated list of <field>:<direction> pairs
  1232.      * $params['_source']                       = (list) True or false to return the _source field or not, or a list of fields to return
  1233.      * $params['_source_excludes']              = (list) A list of fields to exclude from the returned _source field
  1234.      * $params['_source_includes']              = (list) A list of fields to extract and return from the _source field
  1235.      * $params['terminate_after']               = (number) The maximum number of documents to collect for each shard, upon reaching which the query execution will terminate early.
  1236.      * $params['stats']                         = (list) Specific 'tag' of the request for logging and statistical purposes
  1237.      * $params['suggest_field']                 = (string) Specify which field to use for suggestions
  1238.      * $params['suggest_mode']                  = (enum) Specify suggest mode (Options = missing,popular,always) (Default = missing)
  1239.      * $params['suggest_size']                  = (number) How many suggestions to return in response
  1240.      * $params['suggest_text']                  = (string) The source text for which the suggestions should be returned
  1241.      * $params['timeout']                       = (time) Explicit operation timeout
  1242.      * $params['track_scores']                  = (boolean) Whether to calculate and return scores even if they are not used for sorting
  1243.      * $params['track_total_hits']              = (boolean) Indicate if the number of documents that match the query should be tracked
  1244.      * $params['allow_partial_search_results']  = (boolean) Indicate if an error should be returned if there is a partial search failure or timeout (Default = true)
  1245.      * $params['typed_keys']                    = (boolean) Specify whether aggregation and suggester names should be prefixed by their respective types in the response
  1246.      * $params['version']                       = (boolean) Specify whether to return document version as part of a hit
  1247.      * $params['seq_no_primary_term']           = (boolean) Specify whether to return sequence number and primary term of the last modification of each hit
  1248.      * $params['request_cache']                 = (boolean) Specify if request cache should be used for this request or not, defaults to index level setting
  1249.      * $params['batched_reduce_size']           = (number) The number of shard results that should be reduced at once on the coordinating node. This value should be used as a protection mechanism to reduce the memory overhead per search request if the potential number of shards in the request can be large. (Default = 512)
  1250.      * $params['max_concurrent_shard_requests'] = (number) The number of concurrent shard requests per node this search executes concurrently. This value should be used to limit the impact of the search on the cluster in order to limit the number of concurrent shard requests (Default = 5)
  1251.      * $params['pre_filter_shard_size']         = (number) A threshold that enforces a pre-filter roundtrip to prefilter search shards based on query rewriting if the number of shards the search request expands to exceeds the threshold. This filter roundtrip can limit the number of shards significantly if for instance a shard can not match any documents based on its rewrite method ie. if date filters are mandatory to match but the shard bounds and the query are disjoint.
  1252.      * $params['rest_total_hits_as_int']        = (boolean) Indicates whether hits.total should be rendered as an integer or an object in the rest search response (Default = false)
  1253.      * $params['min_compatible_shard_node']     = (string) The minimum compatible version that all shards involved in search should have for this request to be successful
  1254.      * $params['body']                          = (array) The search definition using the Query DSL
  1255.      *
  1256.      * @param array $params Associative array of parameters
  1257.      * @return array
  1258.      * @see https://www.elastic.co/guide/en/elasticsearch/reference/master/search-search.html
  1259.      */
  1260.     public function search(array $params = [])
  1261.     {
  1262.         $index $this->extractArgument($params'index');
  1263.         $type $this->extractArgument($params'type');
  1264.         $body $this->extractArgument($params'body');
  1265.         $endpointBuilder $this->endpoints;
  1266.         $endpoint $endpointBuilder('Search');
  1267.         $endpoint->setParams($params);
  1268.         $endpoint->setIndex($index);
  1269.         $endpoint->setType($type);
  1270.         $endpoint->setBody($body);
  1271.         return $this->performRequest($endpoint);
  1272.     }
  1273.     /**
  1274.      * Searches a vector tile for geospatial values. Returns results as a binary Mapbox vector tile.
  1275.      *
  1276.      * $params['index']            = (list) Comma-separated list of data streams, indices, or aliases to search
  1277.      * $params['field']            = (string) Field containing geospatial data to return
  1278.      * $params['zoom']             = (int) Zoom level for the vector tile to search
  1279.      * $params['x']                = (int) X coordinate for the vector tile to search
  1280.      * $params['y']                = (int) Y coordinate for the vector tile to search
  1281.      * $params['exact_bounds']     = (boolean) If false, the meta layer's feature is the bounding box of the tile. If true, the meta layer's feature is a bounding box resulting from a `geo_bounds` aggregation. (Default = false)
  1282.      * $params['extent']           = (int) Size, in pixels, of a side of the vector tile. (Default = 4096)
  1283.      * $params['grid_precision']   = (int) Additional zoom levels available through the aggs layer. Accepts 0-8. (Default = 8)
  1284.      * $params['grid_type']        = (enum) Determines the geometry type for features in the aggs layer. (Options = grid,point,centroid) (Default = grid)
  1285.      * $params['size']             = (int) Maximum number of features to return in the hits layer. Accepts 0-10000. (Default = 10000)
  1286.      * $params['track_total_hits'] = (boolean|long) Indicate if the number of documents that match the query should be tracked. A number can also be specified, to accurately track the total hit count up to the number.
  1287.      * $params['body']             = (array) Search request body.
  1288.      *
  1289.      * @param array $params Associative array of parameters
  1290.      * @return array
  1291.      * @see https://www.elastic.co/guide/en/elasticsearch/reference/master/search-vector-tile-api.html
  1292.      *
  1293.      * @note This API is EXPERIMENTAL and may be changed or removed completely in a future release
  1294.      *
  1295.      */
  1296.     public function searchMvt(array $params = [])
  1297.     {
  1298.         $index $this->extractArgument($params'index');
  1299.         $field $this->extractArgument($params'field');
  1300.         $zoom $this->extractArgument($params'zoom');
  1301.         $x $this->extractArgument($params'x');
  1302.         $y $this->extractArgument($params'y');
  1303.         $body $this->extractArgument($params'body');
  1304.         $endpointBuilder $this->endpoints;
  1305.         $endpoint $endpointBuilder('SearchMvt');
  1306.         $endpoint->setParams($params);
  1307.         $endpoint->setIndex($index);
  1308.         $endpoint->setField($field);
  1309.         $endpoint->setZoom($zoom);
  1310.         $endpoint->setX($x);
  1311.         $endpoint->setY($y);
  1312.         $endpoint->setBody($body);
  1313.         return $this->performRequest($endpoint);
  1314.     }
  1315.     /**
  1316.      * Returns information about the indices and shards that a search request would be executed against.
  1317.      *
  1318.      * $params['index']              = (list) A comma-separated list of index names to search; use `_all` or empty string to perform the operation on all indices
  1319.      * $params['preference']         = (string) Specify the node or shard the operation should be performed on (default: random)
  1320.      * $params['routing']            = (string) Specific routing value
  1321.      * $params['local']              = (boolean) Return local information, do not retrieve the state from master node (default: false)
  1322.      * $params['ignore_unavailable'] = (boolean) Whether specified concrete indices should be ignored when unavailable (missing or closed)
  1323.      * $params['allow_no_indices']   = (boolean) Whether to ignore if a wildcard indices expression resolves into no concrete indices. (This includes `_all` string or when no indices have been specified)
  1324.      * $params['expand_wildcards']   = (enum) Whether to expand wildcard expression to concrete indices that are open, closed or both. (Options = open,closed,hidden,none,all) (Default = open)
  1325.      *
  1326.      * @param array $params Associative array of parameters
  1327.      * @return array
  1328.      * @see https://www.elastic.co/guide/en/elasticsearch/reference/master/search-shards.html
  1329.      */
  1330.     public function searchShards(array $params = [])
  1331.     {
  1332.         $index $this->extractArgument($params'index');
  1333.         $endpointBuilder $this->endpoints;
  1334.         $endpoint $endpointBuilder('SearchShards');
  1335.         $endpoint->setParams($params);
  1336.         $endpoint->setIndex($index);
  1337.         return $this->performRequest($endpoint);
  1338.     }
  1339.     /**
  1340.      * Allows to use the Mustache language to pre-render a search definition.
  1341.      *
  1342.      * $params['index']                   = (list) A comma-separated list of index names to search; use `_all` or empty string to perform the operation on all indices
  1343.      * $params['type']                    = DEPRECATED (list) A comma-separated list of document types to search; leave empty to perform the operation on all types
  1344.      * $params['ignore_unavailable']      = (boolean) Whether specified concrete indices should be ignored when unavailable (missing or closed)
  1345.      * $params['ignore_throttled']        = (boolean) Whether specified concrete, expanded or aliased indices should be ignored when throttled
  1346.      * $params['allow_no_indices']        = (boolean) Whether to ignore if a wildcard indices expression resolves into no concrete indices. (This includes `_all` string or when no indices have been specified)
  1347.      * $params['expand_wildcards']        = (enum) Whether to expand wildcard expression to concrete indices that are open, closed or both. (Options = open,closed,hidden,none,all) (Default = open)
  1348.      * $params['preference']              = (string) Specify the node or shard the operation should be performed on (default: random)
  1349.      * $params['routing']                 = (list) A comma-separated list of specific routing values
  1350.      * $params['scroll']                  = (time) Specify how long a consistent view of the index should be maintained for scrolled search
  1351.      * $params['search_type']             = (enum) Search operation type (Options = query_then_fetch,dfs_query_then_fetch)
  1352.      * $params['explain']                 = (boolean) Specify whether to return detailed information about score computation as part of a hit
  1353.      * $params['profile']                 = (boolean) Specify whether to profile the query execution
  1354.      * $params['typed_keys']              = (boolean) Specify whether aggregation and suggester names should be prefixed by their respective types in the response
  1355.      * $params['rest_total_hits_as_int']  = (boolean) Indicates whether hits.total should be rendered as an integer or an object in the rest search response (Default = false)
  1356.      * $params['ccs_minimize_roundtrips'] = (boolean) Indicates whether network round-trips should be minimized as part of cross-cluster search requests execution (Default = true)
  1357.      * $params['body']                    = (array) The search definition template and its params (Required)
  1358.      *
  1359.      * @param array $params Associative array of parameters
  1360.      * @return array
  1361.      * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/search-template.html
  1362.      */
  1363.     public function searchTemplate(array $params = [])
  1364.     {
  1365.         $index $this->extractArgument($params'index');
  1366.         $type $this->extractArgument($params'type');
  1367.         $body $this->extractArgument($params'body');
  1368.         $endpointBuilder $this->endpoints;
  1369.         $endpoint $endpointBuilder('SearchTemplate');
  1370.         $endpoint->setParams($params);
  1371.         $endpoint->setIndex($index);
  1372.         $endpoint->setType($type);
  1373.         $endpoint->setBody($body);
  1374.         return $this->performRequest($endpoint);
  1375.     }
  1376.     /**
  1377.      * The terms enum API  can be used to discover terms in the index that begin with the provided string. It is designed for low-latency look-ups used in auto-complete scenarios.
  1378.      *
  1379.      * $params['index'] = (list) A comma-separated list of index names to search; use `_all` or empty string to perform the operation on all indices
  1380.      * $params['body']  = (array) field name, string which is the prefix expected in matching terms, timeout and size for max number of results
  1381.      *
  1382.      * @param array $params Associative array of parameters
  1383.      * @return array
  1384.      * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/search-terms-enum.html
  1385.      */
  1386.     public function termsEnum(array $params = [])
  1387.     {
  1388.         $index $this->extractArgument($params'index');
  1389.         $body $this->extractArgument($params'body');
  1390.         $endpointBuilder $this->endpoints;
  1391.         $endpoint $endpointBuilder('TermsEnum');
  1392.         $endpoint->setParams($params);
  1393.         $endpoint->setIndex($index);
  1394.         $endpoint->setBody($body);
  1395.         return $this->performRequest($endpoint);
  1396.     }
  1397.     /**
  1398.      * Returns information and statistics about terms in the fields of a particular document.
  1399.      *
  1400.      * $params['index']            = (string) The index in which the document resides. (Required)
  1401.      * $params['id']               = (string) The id of the document, when not specified a doc param should be supplied.
  1402.      * $params['type']             = DEPRECATED (string) The type of the document.
  1403.      * $params['term_statistics']  = (boolean) Specifies if total term frequency and document frequency should be returned. (Default = false)
  1404.      * $params['field_statistics'] = (boolean) Specifies if document count, sum of document frequencies and sum of total term frequencies should be returned. (Default = true)
  1405.      * $params['fields']           = (list) A comma-separated list of fields to return.
  1406.      * $params['offsets']          = (boolean) Specifies if term offsets should be returned. (Default = true)
  1407.      * $params['positions']        = (boolean) Specifies if term positions should be returned. (Default = true)
  1408.      * $params['payloads']         = (boolean) Specifies if term payloads should be returned. (Default = true)
  1409.      * $params['preference']       = (string) Specify the node or shard the operation should be performed on (default: random).
  1410.      * $params['routing']          = (string) Specific routing value.
  1411.      * $params['realtime']         = (boolean) Specifies if request is real-time as opposed to near-real-time (default: true).
  1412.      * $params['version']          = (number) Explicit version number for concurrency control
  1413.      * $params['version_type']     = (enum) Specific version type (Options = internal,external,external_gte,force)
  1414.      * $params['body']             = (array) Define parameters and or supply a document to get termvectors for. See documentation.
  1415.      *
  1416.      * @param array $params Associative array of parameters
  1417.      * @return array
  1418.      * @see https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-termvectors.html
  1419.      */
  1420.     public function termvectors(array $params = [])
  1421.     {
  1422.         $index $this->extractArgument($params'index');
  1423.         $id $this->extractArgument($params'id');
  1424.         $type $this->extractArgument($params'type');
  1425.         $body $this->extractArgument($params'body');
  1426.         $endpointBuilder $this->endpoints;
  1427.         $endpoint $endpointBuilder('TermVectors');
  1428.         $endpoint->setParams($params);
  1429.         $endpoint->setIndex($index);
  1430.         $endpoint->setId($id);
  1431.         $endpoint->setType($type);
  1432.         $endpoint->setBody($body);
  1433.         return $this->performRequest($endpoint);
  1434.     }
  1435.     /**
  1436.      * Updates a document with a script or partial document.
  1437.      *
  1438.      * $params['id']                     = (string) Document ID (Required)
  1439.      * $params['index']                  = (string) The name of the index (Required)
  1440.      * $params['type']                   = DEPRECATED (string) The type of the document
  1441.      * $params['wait_for_active_shards'] = (string) Sets the number of shard copies that must be active before proceeding with the update operation. Defaults to 1, meaning the primary shard only. Set to `all` for all shard copies, otherwise set to any non-negative value less than or equal to the total number of copies for the shard (number of replicas + 1)
  1442.      * $params['_source']                = (list) True or false to return the _source field or not, or a list of fields to return
  1443.      * $params['_source_excludes']       = (list) A list of fields to exclude from the returned _source field
  1444.      * $params['_source_includes']       = (list) A list of fields to extract and return from the _source field
  1445.      * $params['lang']                   = (string) The script language (default: painless)
  1446.      * $params['refresh']                = (enum) If `true` then refresh the affected shards to make this operation visible to search, if `wait_for` then wait for a refresh to make this operation visible to search, if `false` (the default) then do nothing with refreshes. (Options = true,false,wait_for)
  1447.      * $params['retry_on_conflict']      = (number) Specify how many times should the operation be retried when a conflict occurs (default: 0)
  1448.      * $params['routing']                = (string) Specific routing value
  1449.      * $params['timeout']                = (time) Explicit operation timeout
  1450.      * $params['if_seq_no']              = (number) only perform the update operation if the last operation that has changed the document has the specified sequence number
  1451.      * $params['if_primary_term']        = (number) only perform the update operation if the last operation that has changed the document has the specified primary term
  1452.      * $params['require_alias']          = (boolean) When true, requires destination is an alias. Default is false
  1453.      * $params['body']                   = (array) The request definition requires either `script` or partial `doc` (Required)
  1454.      *
  1455.      * @param array $params Associative array of parameters
  1456.      * @return array
  1457.      * @see https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-update.html
  1458.      */
  1459.     public function update(array $params = [])
  1460.     {
  1461.         $id $this->extractArgument($params'id');
  1462.         $index $this->extractArgument($params'index');
  1463.         $type $this->extractArgument($params'type');
  1464.         $body $this->extractArgument($params'body');
  1465.         $endpointBuilder $this->endpoints;
  1466.         $endpoint $endpointBuilder('Update');
  1467.         $endpoint->setParams($params);
  1468.         $endpoint->setId($id);
  1469.         $endpoint->setIndex($index);
  1470.         $endpoint->setType($type);
  1471.         $endpoint->setBody($body);
  1472.         return $this->performRequest($endpoint);
  1473.     }
  1474.     /**
  1475.      * Performs an update on every document in the index without changing the source,for example to pick up a mapping change.
  1476.      *
  1477.      * $params['index']                  = (list) A comma-separated list of index names to search; use `_all` or empty string to perform the operation on all indices (Required)
  1478.      * $params['type']                   = DEPRECATED (list) A comma-separated list of document types to search; leave empty to perform the operation on all types
  1479.      * $params['analyzer']               = (string) The analyzer to use for the query string
  1480.      * $params['analyze_wildcard']       = (boolean) Specify whether wildcard and prefix queries should be analyzed (default: false)
  1481.      * $params['default_operator']       = (enum) The default operator for query string query (AND or OR) (Options = AND,OR) (Default = OR)
  1482.      * $params['df']                     = (string) The field to use as default where no field prefix is given in the query string
  1483.      * $params['from']                   = (number) Starting offset (default: 0)
  1484.      * $params['ignore_unavailable']     = (boolean) Whether specified concrete indices should be ignored when unavailable (missing or closed)
  1485.      * $params['allow_no_indices']       = (boolean) Whether to ignore if a wildcard indices expression resolves into no concrete indices. (This includes `_all` string or when no indices have been specified)
  1486.      * $params['conflicts']              = (enum) What to do when the update by query hits version conflicts? (Options = abort,proceed) (Default = abort)
  1487.      * $params['expand_wildcards']       = (enum) Whether to expand wildcard expression to concrete indices that are open, closed or both. (Options = open,closed,hidden,none,all) (Default = open)
  1488.      * $params['lenient']                = (boolean) Specify whether format-based query failures (such as providing text to a numeric field) should be ignored
  1489.      * $params['pipeline']               = (string) Ingest pipeline to set on index requests made by this action. (default: none)
  1490.      * $params['preference']             = (string) Specify the node or shard the operation should be performed on (default: random)
  1491.      * $params['q']                      = (string) Query in the Lucene query string syntax
  1492.      * $params['routing']                = (list) A comma-separated list of specific routing values
  1493.      * $params['scroll']                 = (time) Specify how long a consistent view of the index should be maintained for scrolled search
  1494.      * $params['search_type']            = (enum) Search operation type (Options = query_then_fetch,dfs_query_then_fetch)
  1495.      * $params['search_timeout']         = (time) Explicit timeout for each search request. Defaults to no timeout.
  1496.      * $params['size']                   = (number) Deprecated, please use `max_docs` instead
  1497.      * $params['max_docs']               = (number) Maximum number of documents to process (default: all documents)
  1498.      * $params['sort']                   = (list) A comma-separated list of <field>:<direction> pairs
  1499.      * $params['terminate_after']        = (number) The maximum number of documents to collect for each shard, upon reaching which the query execution will terminate early.
  1500.      * $params['stats']                  = (list) Specific 'tag' of the request for logging and statistical purposes
  1501.      * $params['version']                = (boolean) Specify whether to return document version as part of a hit
  1502.      * $params['version_type']           = (boolean) Should the document increment the version number (internal) on hit or not (reindex)
  1503.      * $params['request_cache']          = (boolean) Specify if request cache should be used for this request or not, defaults to index level setting
  1504.      * $params['refresh']                = (boolean) Should the affected indexes be refreshed?
  1505.      * $params['timeout']                = (time) Time each individual bulk request should wait for shards that are unavailable. (Default = 1m)
  1506.      * $params['wait_for_active_shards'] = (string) Sets the number of shard copies that must be active before proceeding with the update by query operation. Defaults to 1, meaning the primary shard only. Set to `all` for all shard copies, otherwise set to any non-negative value less than or equal to the total number of copies for the shard (number of replicas + 1)
  1507.      * $params['scroll_size']            = (number) Size on the scroll request powering the update by query (Default = 100)
  1508.      * $params['wait_for_completion']    = (boolean) Should the request should block until the update by query operation is complete. (Default = true)
  1509.      * $params['requests_per_second']    = (number) The throttle to set on this request in sub-requests per second. -1 means no throttle. (Default = 0)
  1510.      * $params['slices']                 = (number|string) The number of slices this task should be divided into. Defaults to 1, meaning the task isn't sliced into subtasks. Can be set to `auto`. (Default = 1)
  1511.      * $params['body']                   = (array) The search definition using the Query DSL
  1512.      *
  1513.      * @param array $params Associative array of parameters
  1514.      * @return array
  1515.      * @see https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-update-by-query.html
  1516.      */
  1517.     public function updateByQuery(array $params = [])
  1518.     {
  1519.         $index $this->extractArgument($params'index');
  1520.         $type $this->extractArgument($params'type');
  1521.         $body $this->extractArgument($params'body');
  1522.         $endpointBuilder $this->endpoints;
  1523.         $endpoint $endpointBuilder('UpdateByQuery');
  1524.         $endpoint->setParams($params);
  1525.         $endpoint->setIndex($index);
  1526.         $endpoint->setType($type);
  1527.         $endpoint->setBody($body);
  1528.         return $this->performRequest($endpoint);
  1529.     }
  1530.     /**
  1531.      * Changes the number of requests per second for a particular Update By Query operation.
  1532.      *
  1533.      * $params['task_id']             = (string) The task id to rethrottle
  1534.      * $params['requests_per_second'] = (number) The throttle to set on this request in floating sub-requests per second. -1 means set no throttle. (Required)
  1535.      *
  1536.      * @param array $params Associative array of parameters
  1537.      * @return array
  1538.      * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update-by-query.html
  1539.      */
  1540.     public function updateByQueryRethrottle(array $params = [])
  1541.     {
  1542.         $task_id $this->extractArgument($params'task_id');
  1543.         $endpointBuilder $this->endpoints;
  1544.         $endpoint $endpointBuilder('UpdateByQueryRethrottle');
  1545.         $endpoint->setParams($params);
  1546.         $endpoint->setTaskId($task_id);
  1547.         return $this->performRequest($endpoint);
  1548.     }
  1549.     /**
  1550.      * Returns the asyncSearch namespace
  1551.      */
  1552.     public function asyncSearch(): AsyncSearchNamespace
  1553.     {
  1554.         return $this->asyncSearch;
  1555.     }
  1556.     /**
  1557.      * Returns the autoscaling namespace
  1558.      */
  1559.     public function autoscaling(): AutoscalingNamespace
  1560.     {
  1561.         return $this->autoscaling;
  1562.     }
  1563.     /**
  1564.      * Returns the cat namespace
  1565.      */
  1566.     public function cat(): CatNamespace
  1567.     {
  1568.         return $this->cat;
  1569.     }
  1570.     /**
  1571.      * Returns the ccr namespace
  1572.      */
  1573.     public function ccr(): CcrNamespace
  1574.     {
  1575.         return $this->ccr;
  1576.     }
  1577.     /**
  1578.      * Returns the cluster namespace
  1579.      */
  1580.     public function cluster(): ClusterNamespace
  1581.     {
  1582.         return $this->cluster;
  1583.     }
  1584.     /**
  1585.      * Returns the danglingIndices namespace
  1586.      */
  1587.     public function danglingIndices(): DanglingIndicesNamespace
  1588.     {
  1589.         return $this->danglingIndices;
  1590.     }
  1591.     /**
  1592.      * Returns the dataFrameTransformDeprecated namespace
  1593.      */
  1594.     public function dataFrameTransformDeprecated(): DataFrameTransformDeprecatedNamespace
  1595.     {
  1596.         return $this->dataFrameTransformDeprecated;
  1597.     }
  1598.     /**
  1599.      * Returns the enrich namespace
  1600.      */
  1601.     public function enrich(): EnrichNamespace
  1602.     {
  1603.         return $this->enrich;
  1604.     }
  1605.     /**
  1606.      * Returns the eql namespace
  1607.      */
  1608.     public function eql(): EqlNamespace
  1609.     {
  1610.         return $this->eql;
  1611.     }
  1612.     /**
  1613.      * Returns the features namespace
  1614.      */
  1615.     public function features(): FeaturesNamespace
  1616.     {
  1617.         return $this->features;
  1618.     }
  1619.     /**
  1620.      * Returns the fleet namespace
  1621.      */
  1622.     public function fleet(): FleetNamespace
  1623.     {
  1624.         return $this->fleet;
  1625.     }
  1626.     /**
  1627.      * Returns the graph namespace
  1628.      */
  1629.     public function graph(): GraphNamespace
  1630.     {
  1631.         return $this->graph;
  1632.     }
  1633.     /**
  1634.      * Returns the ilm namespace
  1635.      */
  1636.     public function ilm(): IlmNamespace
  1637.     {
  1638.         return $this->ilm;
  1639.     }
  1640.     /**
  1641.      * Returns the indices namespace
  1642.      */
  1643.     public function indices(): IndicesNamespace
  1644.     {
  1645.         return $this->indices;
  1646.     }
  1647.     /**
  1648.      * Returns the ingest namespace
  1649.      */
  1650.     public function ingest(): IngestNamespace
  1651.     {
  1652.         return $this->ingest;
  1653.     }
  1654.     /**
  1655.      * Returns the license namespace
  1656.      */
  1657.     public function license(): LicenseNamespace
  1658.     {
  1659.         return $this->license;
  1660.     }
  1661.     /**
  1662.      * Returns the logstash namespace
  1663.      */
  1664.     public function logstash(): LogstashNamespace
  1665.     {
  1666.         return $this->logstash;
  1667.     }
  1668.     /**
  1669.      * Returns the migration namespace
  1670.      */
  1671.     public function migration(): MigrationNamespace
  1672.     {
  1673.         return $this->migration;
  1674.     }
  1675.     /**
  1676.      * Returns the ml namespace
  1677.      */
  1678.     public function ml(): MlNamespace
  1679.     {
  1680.         return $this->ml;
  1681.     }
  1682.     /**
  1683.      * Returns the monitoring namespace
  1684.      */
  1685.     public function monitoring(): MonitoringNamespace
  1686.     {
  1687.         return $this->monitoring;
  1688.     }
  1689.     /**
  1690.      * Returns the nodes namespace
  1691.      */
  1692.     public function nodes(): NodesNamespace
  1693.     {
  1694.         return $this->nodes;
  1695.     }
  1696.     /**
  1697.      * Returns the rollup namespace
  1698.      */
  1699.     public function rollup(): RollupNamespace
  1700.     {
  1701.         return $this->rollup;
  1702.     }
  1703.     /**
  1704.      * Returns the searchableSnapshots namespace
  1705.      */
  1706.     public function searchableSnapshots(): SearchableSnapshotsNamespace
  1707.     {
  1708.         return $this->searchableSnapshots;
  1709.     }
  1710.     /**
  1711.      * Returns the security namespace
  1712.      */
  1713.     public function security(): SecurityNamespace
  1714.     {
  1715.         return $this->security;
  1716.     }
  1717.     /**
  1718.      * Returns the shutdown namespace
  1719.      */
  1720.     public function shutdown(): ShutdownNamespace
  1721.     {
  1722.         return $this->shutdown;
  1723.     }
  1724.     /**
  1725.      * Returns the slm namespace
  1726.      */
  1727.     public function slm(): SlmNamespace
  1728.     {
  1729.         return $this->slm;
  1730.     }
  1731.     /**
  1732.      * Returns the snapshot namespace
  1733.      */
  1734.     public function snapshot(): SnapshotNamespace
  1735.     {
  1736.         return $this->snapshot;
  1737.     }
  1738.     /**
  1739.      * Returns the sql namespace
  1740.      */
  1741.     public function sql(): SqlNamespace
  1742.     {
  1743.         return $this->sql;
  1744.     }
  1745.     /**
  1746.      * Returns the ssl namespace
  1747.      */
  1748.     public function ssl(): SslNamespace
  1749.     {
  1750.         return $this->ssl;
  1751.     }
  1752.     /**
  1753.      * Returns the tasks namespace
  1754.      */
  1755.     public function tasks(): TasksNamespace
  1756.     {
  1757.         return $this->tasks;
  1758.     }
  1759.     /**
  1760.      * Returns the textStructure namespace
  1761.      */
  1762.     public function textStructure(): TextStructureNamespace
  1763.     {
  1764.         return $this->textStructure;
  1765.     }
  1766.     /**
  1767.      * Returns the transform namespace
  1768.      */
  1769.     public function transform(): TransformNamespace
  1770.     {
  1771.         return $this->transform;
  1772.     }
  1773.     /**
  1774.      * Returns the watcher namespace
  1775.      */
  1776.     public function watcher(): WatcherNamespace
  1777.     {
  1778.         return $this->watcher;
  1779.     }
  1780.     /**
  1781.      * Returns the xpack namespace
  1782.      */
  1783.     public function xpack(): XpackNamespace
  1784.     {
  1785.         return $this->xpack;
  1786.     }
  1787.     /**
  1788.      * Catchall for registered namespaces
  1789.      *
  1790.      * @return object
  1791.      * @throws BadMethodCallException if the namespace cannot be found
  1792.      */
  1793.     public function __call(string $name, array $arguments)
  1794.     {
  1795.         if (isset($this->registeredNamespaces[$name])) {
  1796.             return $this->registeredNamespaces[$name];
  1797.         }
  1798.         throw new BadMethodCallException("Namespace [$name] not found");
  1799.     }
  1800.     /**
  1801.      * Extract an argument from the array of parameters
  1802.      *
  1803.      * @return null|mixed
  1804.      */
  1805.     public function extractArgument(array &$paramsstring $arg)
  1806.     {
  1807.         if (array_key_exists($arg$params) === true) {
  1808.             $value $params[$arg];
  1809.             $value = (is_object($value) && !is_iterable($value)) ?
  1810.                 (array) $value :
  1811.                 $value;
  1812.             unset($params[$arg]);
  1813.             return $value;
  1814.         } else {
  1815.             return null;
  1816.         }
  1817.     }
  1818.     /**
  1819.      * @return callable|array
  1820.      */
  1821.     private function performRequest(AbstractEndpoint $endpoint)
  1822.     {
  1823.         $promise =  $this->transport->performRequest(
  1824.             $endpoint->getMethod(),
  1825.             $endpoint->getURI(),
  1826.             $endpoint->getParams(),
  1827.             $endpoint->getBody(),
  1828.             $endpoint->getOptions()
  1829.         );
  1830.         return $this->transport->resultOrFuture($promise$endpoint->getOptions());
  1831.     }
  1832. }