1Search::Elasticsearch::UCsleirenCto:n:t7r_i0bS:ue:taDeridcrheP:ce:trE(ll3a)Dsotciucmseenatracthi:o:nClient::7_0::Direct(3)
2
3
4
6 Search::Elasticsearch::Client::7_0::Direct - Thin client with full
7 support for Elasticsearch 7.x APIs
8
10 version 7.30
11
13 Create a client:
14
15 use Search::Elasticsearch;
16 my $e = Search::Elasticsearch->new(
17 client => '7_0::Direct'
18 );
19
20 Index a doc:
21
22 $e->index(
23 index => 'my_index',
24 type => 'blog_post',
25 id => 123,
26 body => {
27 title => "Elasticsearch clients",
28 content => "Interesting content...",
29 date => "2013-09-23"
30 }
31 );
32
33 Get a doc:
34
35 $e->get(
36 index => 'my_index',
37 type => 'my_type',
38 id => 123
39 );
40
41 Search for docs:
42
43 $results = $e->search(
44 index => 'my_index',
45 body => {
46 query => {
47 match => {
48 title => "elasticsearch"
49 }
50 }
51 }
52 );
53
54 Index-level requests:
55
56 $e->indices->create( index => 'my_index' );
57 $e->indices->delete( index => 'my_index' )
58
59 Ingest pipeline requests:
60
61 $e->ingest->get_pipeline( id => 'apache-logs' );
62
63 Cluster-level requests:
64
65 $health = $e->cluster->health;
66
67 Node-level requests:
68
69 $info = $e->nodes->info;
70 $stats = $e->nodes->stats;
71
72 Snapshot and restore:
73
74 $e->snapshot->create_repository(
75 repository => 'my_backups',
76 type => 'fs',
77 settings => {
78 location => '/mnt/backups'
79 }
80 );
81
82 $e->snapshot->create(
83 repository => 'my_backups',
84 snapshot => 'backup_2014'
85 );
86
87 Task management:
88
89 $e->tasks->list;
90
91 `cat` debugging:
92
93 say $e->cat->allocation;
94 say $e->cat->health;
95
96 Cross-cluster replication requests:
97
98 say $e->ccr->follow;
99
100 Index lifecycle management requests:
101
102 say $e->ilm->put_lifecycle;
103
105 The Search::Elasticsearch::Client::7_0::Direct class provides the
106 Elasticsearch 7.x compatible client returned by:
107
108 $e = Search::Elasticsearch->new(
109 client => "7_0::Direct" # default
110 );
111
112 It is intended to be as close as possible to the native REST API that
113 Elasticsearch uses, so that it is easy to translate the Elasticsearch
114 reference documentation <http://www.elasticsearch/guide> for an API to
115 the equivalent in this client.
116
117 This class provides the methods for document CRUD, bulk document CRUD
118 and search. It also provides access to clients for managing indices
119 and the cluster.
120
122 This version of the client supports the Elasticsearch 7.0 branch, which
123 is not backwards compatible with earlier branches.
124
125 If you need to talk to a version of Elasticsearch before 7.0.0, please
126 install one of the following modules:
127
128 • Search::Elasticsearch::Client::6_0
129
130 • Search::Elasticsearch::Client::5_0
131
132 • Search::Elasticsearch::Client::2_0
133
134 • Search::Elasticsearch::Client::1_0
135
136 • Search::Elasticsearch::Client::0_90
137
139 Parameter passing
140 Parameters can be passed to any request method as a list or as a hash
141 reference. The following two statements are equivalent:
142
143 $e->search( size => 10 );
144 $e->search({size => 10});
145
146 Path parameters
147 Any values that should be included in the URL path, eg
148 "/{index}/{type}" should be passed as top level parameters:
149
150 $e->search( index => 'my_index', type => 'my_type' );
151
152 Alternatively, you can specify a "path" parameter directly:
153
154 $e->search( path => '/my_index/my_type' );
155
156 Query-string parameters
157 Any values that should be included in the query string should be passed
158 as top level parameters:
159
160 $e->search( size => 10 );
161
162 If you pass in a "\%params" hash, then it will be included in the query
163 string parameters without any error checking. The following:
164
165 $e->search( size => 10, params => { from => 6, size => 6 })
166
167 would result in this query string:
168
169 ?from=6&size=10
170
171 Body parameter
172 The request body should be passed in the "body" key:
173
174 $e->search(
175 body => {
176 query => {...}
177 }
178 );
179
180 The body can also be a UTF8-decoded string, which will be converted
181 into UTF-8 bytes and passed as is:
182
183 $e->indices->analyze( body => "The quick brown fox");
184
185 Boolean parameters
186 Elasticsearch 7.0.0 and above no longer accepts truthy and falsey
187 values for booleans. Instead, it will accept only a JSON "true" or
188 "false", or the string equivalents "true" or "false".
189
190 In the Perl client, you can use the following values:
191
192 • True: "true", "\1", or a JSON::PP::Boolean object.
193
194 • False: "false", "\0", or a JSON::PP::Boolean object.
195
196 Filter path parameter
197 Any API which returns a JSON body accepts a "filter_path" parameter
198 which will filter the JSON down to only the specified paths. For
199 instance, if you are running a search request and only want the "total"
200 hits and the "_source" field for each hit (without the "_id", "_index"
201 etc), you can do:
202
203 $e->search(
204 query => {...},
205 filter_paths => [ 'hits.total', 'hits.hits._source' ]
206 );
207
208 Ignore parameter
209 Normally, any HTTP status code outside the 200-299 range will result in
210 an error being thrown. To suppress these errors, you can specify which
211 status codes to ignore in the "ignore" parameter.
212
213 $e->indices->delete(
214 index => 'my_index',
215 ignore => 404
216 );
217
218 This is most useful for Missing errors, which are triggered by a 404
219 status code when some requested resource does not exist.
220
221 Multiple error codes can be specified with an array:
222
223 $e->indices->delete(
224 index => 'my_index',
225 ignore => [404,409]
226 );
227
229 "bulk_helper_class"
230 The class to use for the "bulk_helper()" method. Defaults to
231 Search::Elasticsearch::Client::7_0::Bulk.
232
233 "scroll_helper_class"
234 The class to use for the "scroll_helper()" method. Defaults to
235 Search::Elasticsearch::Client::7_0::Scroll.
236
238 "info()"
239 $info = $e->info
240
241 Returns information about the version of Elasticsearch that the
242 responding node is running.
243
244 "ping()"
245 $e->ping
246
247 Pings a node in the cluster and returns 1 if it receives a 200
248 response, otherwise it throws an error.
249
250 "indices()"
251 $indices_client = $e->indices;
252
253 Returns a Search::Elasticsearch::Client::7_0::Direct::Indices object
254 which can be used for managing indices, eg creating, deleting indices,
255 managing mapping, index settings etc.
256
257 "ingest()"
258 $ingest_client = $e->ingest;
259
260 Returns a Search::Elasticsearch::Client::7_0::Direct::Ingest object
261 which can be used for managing ingest pipelines.
262
263 "cluster()"
264 $cluster_client = $e->cluster;
265
266 Returns a Search::Elasticsearch::Client::7_0::Direct::Cluster object
267 which can be used for managing the cluster, eg cluster-wide settings
268 and cluster health.
269
270 "nodes()"
271 $node_client = $e->nodes;
272
273 Returns a Search::Elasticsearch::Client::7_0::Direct::Nodes object
274 which can be used to retrieve node info and stats.
275
276 "snapshot()"
277 $snapshot_client = $e->snapshot;
278
279 Returns a Search::Elasticsearch::Client::7_0::Direct::Snapshot object
280 which is used for managing backup repositories and creating and
281 restoring snapshots.
282
283 "tasks()"
284 $tasks_client = $e->tasks;
285
286 Returns a Search::Elasticsearch::Client::7_0::Direct::Tasks object
287 which is used for accessing the task management API.
288
289 "cat()"
290 $cat_client = $e->cat;
291
292 Returns a Search::Elasticsearch::Client::7_0::Direct::Cat object which
293 can be used to retrieve simple to read text info for debugging and
294 monitoring an Elasticsearch cluster.
295
296 "ccr()"
297 $ccr_client = $e->ccr;
298
299 Returns a Search::Elasticsearch::Client::7_0::Direct::CCR object which
300 can be used to handle cross-cluster replication requests.
301
302 "ilm()"
303 $ilm_client = $e->ilm;
304
305 Returns a Search::Elasticsearch::Client::7_0::Direct::ILM object which
306 can be used to handle index lifecycle management requests.
307
309 These methods allow you to perform create, index, update and delete
310 requests for single documents:
311
312 "index()"
313 $response = $e->index(
314 index => 'index_name', # required
315 type => 'type_name', # required
316 id => 'doc_id', # optional, otherwise auto-generated
317
318 body => { document } # required
319 );
320
321 The "index()" method is used to index a new document or to reindex an
322 existing document.
323
324 Query string parameters:
325 "error_trace",
326 "human",
327 "if_primary_term",
328 "if_seq_no",
329 "op_type",
330 "parent",
331 "pipeline",
332 "refresh",
333 "routing",
334 "timeout",
335 "version",
336 "version_type",
337 "wait_for_active_shards"
338
339 See the index docs
340 <http://www.elastic.co/guide/en/elasticsearch/reference/current/docs-
341 index_.html> for more information.
342
343 "create()"
344 $response = $e->create(
345 index => 'index_name', # required
346 type => 'type_name', # required
347 id => 'doc_id', # required
348
349 body => { document } # required
350 );
351
352 The "create()" method works exactly like the "index()" method, except
353 that it will throw a "Conflict" error if a document with the same
354 "index", "type" and "id" already exists.
355
356 Query string parameters:
357 "consistency",
358 "error_trace",
359 "human",
360 "op_type",
361 "parent",
362 "refresh",
363 "routing",
364 "timeout",
365 "version",
366 "version_type"
367
368 See the create docs
369 <http://www.elastic.co/guide/en/elasticsearch/reference/current/docs-
370 create.html> for more information.
371
372 "get()"
373 $response = $e->get(
374 index => 'index_name', # required
375 type => 'type_name', # required
376 id => 'doc_id', # required
377 );
378
379 The "get()" method will retrieve the document with the specified
380 "index", "type" and "id", or will throw a "Missing" error.
381
382 Query string parameters:
383 "_source",
384 "_source_excludes",
385 "_source_includes",
386 "error_trace",
387 "human",
388 "parent",
389 "preference",
390 "realtime",
391 "refresh",
392 "routing",
393 "stored_fields",
394 "version",
395 "version_type"
396
397 See the get docs
398 <http://www.elastic.co/guide/en/elasticsearch/reference/current/docs-
399 get.html> for more information.
400
401 "get_source()"
402 $response = $e->get_source(
403 index => 'index_name', # required
404 type => 'type_name', # required
405 id => 'doc_id', # required
406 );
407
408 The "get_source()" method works just like the "get()" method except
409 that it returns just the "_source" field (the value of the "body"
410 parameter in the "index()" method) instead of returning the "_source"
411 field plus the document metadata, ie the "_index", "_type" etc.
412
413 Query string parameters:
414 "_source",
415 "_source_excludes",
416 "_source_includes",
417 "error_trace",
418 "human",
419 "parent",
420 "preference",
421 "realtime",
422 "refresh",
423 "routing",
424 "version",
425 "version_type"
426
427 See the get_source docs
428 <http://www.elastic.co/guide/en/elasticsearch/reference/current/docs-
429 get.html> for more information.
430
431 "exists()"
432 $response = $e->exists(
433 index => 'index_name', # required
434 type => 'type_name', # required
435 id => 'doc_id', # required
436 );
437
438 The "exists()" method returns 1 if a document with the specified
439 "index", "type" and "id" exists, or an empty string if it doesn't.
440
441 Query string parameters:
442 "_source",
443 "_source_excludes",
444 "_source_includes",
445 "error_trace",
446 "human",
447 "parent",
448 "preference",
449 "realtime",
450 "refresh",
451 "routing",
452 "version",
453 "version_type"
454
455 See the exists docs
456 <http://www.elastic.co/guide/en/elasticsearch/reference/current/docs-
457 get.html> for more information.
458
459 "delete()"
460 $response = $e->delete(
461 index => 'index_name', # required
462 type => 'type_name', # required
463 id => 'doc_id', # required
464 );
465
466 The "delete()" method will delete the document with the specified
467 "index", "type" and "id", or will throw a "Missing" error.
468
469 Query string parameters:
470 "error_trace",
471 "human",
472 "if_primary_term",
473 "if_seq_no",
474 "parent",
475 "refresh",
476 "routing",
477 "timeout",
478 "version",
479 "version_type",
480 "wait_for_active_shards"
481
482 See the delete docs
483 <http://www.elastic.co/guide/en/elasticsearch/reference/current/docs-
484 delete.html> for more information.
485
486 "update()"
487 $response = $e->update(
488 index => 'index_name', # required
489 type => 'type_name', # required
490 id => 'doc_id', # required
491
492 body => { update } # required
493 );
494
495 The "update()" method updates a document with the corresponding
496 "index", "type" and "id" if it exists. Updates can be performed either
497 by:
498
499 • providing a partial document to be merged in to the existing
500 document:
501
502 $response = $e->update(
503 ...,
504 body => {
505 doc => { new_field => 'new_value'},
506 }
507 );
508
509 • with an inline script:
510
511 $response = $e->update(
512 ...,
513 body => {
514 script => {
515 source => "ctx._source.counter += incr",
516 params => { incr => 6 }
517 }
518 }
519 );
520
521 • with an indexed script:
522
523 $response = $e->update(
524 ...,
525 body => {
526 script => {
527 id => $id,
528 lang => 'painless',
529 params => { incr => 6 }
530 }
531 }
532 );
533
534 See indexed scripts
535 <https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-
536 scripting.html#_indexed_scripts> for more information.
537
538 • with a script stored as a file:
539
540 $response = $e->update(
541 ...,
542 body => {
543 script => {
544 file => 'counter',
545 lang => 'painless',
546 params => { incr => 6 }
547 }
548 }
549 );
550
551 See scripting docs
552 <https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-
553 scripting.html> for more information.
554
555 Query string parameters:
556 "_source",
557 "_source_excludes",
558 "_source_includes",
559 "error_trace",
560 "fields",
561 "human",
562 "if_primary_term",
563 "if_seq_no",
564 "lang",
565 "parent",
566 "refresh",
567 "retry_on_conflict",
568 "routing",
569 "timeout",
570 "version",
571 "version_type",
572 "wait_for_active_shards"
573
574 See the update docs
575 <http://www.elastic.co/guide/en/elasticsearch/reference/current/docs-
576 update.html> for more information.
577
578 "termvectors()"
579 $results = $e->termvectors(
580 index => $index, # required
581 type => $type, # required
582
583 id => $id, # optional
584 body => {...} # optional
585 )
586
587 The "termvectors()" method retrieves term and field statistics,
588 positions, offsets and payloads for the specified document, assuming
589 that termvectors have been enabled.
590
591 Query string parameters:
592 "error_trace",
593 "field_statistics",
594 "fields",
595 "human",
596 "offsets",
597 "parent",
598 "payloads",
599 "positions",
600 "preference",
601 "realtime",
602 "routing",
603 "term_statistics",
604 "version",
605 "version_type"
606
607 See the termvector docs
608 <http://www.elastic.co/guide/en/elasticsearch/reference/current/docs-
609 termvectors.html> for more information.
610
612 The bulk document CRUD methods are used for running multiple CRUD
613 actions within a single request. By reducing the number of network
614 requests that need to be made, bulk requests greatly improve
615 performance.
616
617 "bulk()"
618 $response = $e->bulk(
619 index => 'index_name', # required if type specified
620 type => 'type_name', # optional
621
622 body => [ actions ] # required
623 );
624
625 See Search::Elasticsearch::Client::7_0::Bulk and "bulk_helper()" for a
626 helper module that makes bulk indexing simpler to use.
627
628 The "bulk()" method can perform multiple "index()", "create()",
629 "delete()" or "update()" actions with a single request. The "body"
630 parameter expects an array containing the list of actions to perform.
631
632 An action consists of an initial metadata hash ref containing the
633 action type, plus the associated metadata, eg :
634
635 { delete => { _index => 'index', _type => 'type', _id => 123 }}
636
637 The "index" and "create" actions then expect a hashref containing the
638 document itself:
639
640 { create => { _index => 'index', _type => 'type', _id => 123 }},
641 { title => "A newly created document" }
642
643 And the "update" action expects a hashref containing the update
644 commands, eg:
645
646 { update => { _index => 'index', _type => 'type', _id => 123 }},
647 { script => "ctx._source.counter+=1" }
648
649 Each action can include the same parameters that you would pass to the
650 equivalent "index()", "create()", "delete()" or "update()" request,
651 except that "_index", "_type" and "_id" must be specified with the
652 preceding underscore. All other parameters can be specified with or
653 without the underscore.
654
655 For instance:
656
657 $response = $e->bulk(
658 index => 'index_name', # default index name
659 type => 'type_name', # default type name
660 body => [
661
662 # create action
663 { create => {
664 _index => 'not_the_default_index',
665 _type => 'not_the_default_type',
666 _id => 123
667 }},
668 { title => 'Foo' },
669
670 # index action
671 { index => { _id => 124 }},
672 { title => 'Foo' },
673
674 # delete action
675 { delete => { _id => 126 }},
676
677 # update action
678 { update => { _id => 126 }},
679 { script => "ctx._source.counter+1" }
680 ]
681 );
682
683 Each action is performed separately. One failed action will not cause
684 the others to fail as well.
685
686 Query string parameters:
687 "_source",
688 "_source_excludes",
689 "_source_includes",
690 "error_trace",
691 "fields",
692 "human",
693 "pipeline",
694 "refresh",
695 "routing",
696 "timeout",
697 "wait_for_active_shards"
698
699 See the bulk docs
700 <http://www.elastic.co/guide/en/elasticsearch/reference/current/docs-
701 bulk.html> for more information.
702
703 "bulk_helper()"
704 $bulk_helper = $e->bulk_helper( @args );
705
706 Returns a new instance of the class specified in the
707 "bulk_helper_class", which defaults to
708 Search::Elasticsearch::Client::7_0::Bulk.
709
710 "mget()"
711 $results = $e->mget(
712 index => 'default_index', # optional, required when type specified
713 type => 'default_type', # optional
714
715 body => { docs or ids } # required
716 );
717
718 The "mget()" method will retrieve multiple documents with a single
719 request. The "body" consists of an array of documents to retrieve:
720
721 $results = $e->mget(
722 index => 'default_index',
723 type => 'default_type',
724 body => {
725 docs => [
726 { _id => 1},
727 { _id => 2, _type => 'not_the_default_type' }
728 ]
729 }
730 );
731
732 You can also pass any of the other parameters that the "get()" request
733 accepts.
734
735 If you have specified an "index" and "type", you can just include the
736 "ids" of the documents to retrieve:
737
738 $results = $e->mget(
739 index => 'default_index',
740 type => 'default_type',
741 body => {
742 ids => [ 1, 2, 3]
743 }
744 );
745
746 Query string parameters:
747 "_source",
748 "_source_excludes",
749 "_source_includes",
750 "error_trace",
751 "human",
752 "preference",
753 "realtime",
754 "refresh",
755 "routing",
756 "stored_fields"
757
758 See the mget docs
759 <http://www.elastic.co/guide/en/elasticsearch/reference/current/docs-
760 multi-get.html> for more information.
761
762 "mtermvectors()"
763 $results = $e->mtermvectors(
764 index => $index, # required if type specified
765 type => $type, # optional
766
767 body => { } # optional
768 )
769
770 Runs multiple "termvector()" requests in a single request, eg:
771
772 $results = $e->mtermvectors(
773 index => 'test',
774 body => {
775 docs => [
776 { _type => 'test', _id => 1, fields => ['text'] },
777 { _type => 'test', _id => 2, payloads => 1 },
778 ]
779 }
780 );
781
782 Query string parameters:
783 "error_trace",
784 "field_statistics",
785 "fields",
786 "human",
787 "ids",
788 "offsets",
789 "parent",
790 "payloads",
791 "positions",
792 "preference",
793 "realtime",
794 "routing",
795 "term_statistics",
796 "version",
797 "version_type"
798
799 See the mtermvectors docs
800 <http://www.elastic.co/guide/en/elasticsearch/reference/current/docs-
801 multi-termvectors.html> for more information.
802
804 The search methods are used for querying documents in one, more or all
805 indices and of one, more or all types:
806
807 "search()"
808 $results = $e->search(
809 index => 'index' | \@indices, # optional
810 type => 'type' | \@types, # optional
811
812 body => { search params } # optional
813 );
814
815 The "search()" method searches for matching documents in one or more
816 indices. It is just as easy to search a single index as it is to
817 search all the indices in your cluster. It can also return
818 aggregations
819 <http://www.elastic.co/guide/en/elasticsearch/reference/current/search-
820 aggregations.html> highlighted snippets
821 <http://www.elastic.co/guide/en/elasticsearch/reference/current/search-
822 highlighting.html> and did-you-mean
823 <http://www.elastic.co/guide/en/elasticsearch/reference/current/search-
824 suggesters-phrase.html> or search-as-you-type
825 <http://www.elastic.co/guide/en/elasticsearch/reference/current/search-
826 suggesters-completion.html> suggestions.
827
828 The lite version of search
829 <http://www.elastic.co/guide/en/elasticsearch/reference/current/search-
830 uri-request.html> allows you to specify a query string in the "q"
831 parameter, using the Lucene query string syntax:
832
833 $results = $e->search( q => 'title:(elasticsearch clients)');
834
835 However, the preferred way to search is by using the Query DSL
836 <http://www.elastic.co/guide/en/elasticsearch/reference/current/query-
837 dsl.html> to create a query, and passing that "query" in the request
838 body
839 <http://www.elastic.co/guide/en/elasticsearch/reference/current/search-
840 request-body.html>:
841
842 $results = $e->search(
843 body => {
844 query => {
845 match => { title => 'Elasticsearch clients'}
846 }
847 }
848 );
849
850 Query string parameters:
851 "_source",
852 "_source_excludes",
853 "_source_includes",
854 "allow_no_indices",
855 "allow_partial_search_results",
856 "analyze_wildcard",
857 "analyzer",
858 "batched_reduce_size",
859 "default_operator",
860 "df",
861 "docvalue_fields",
862 "error_trace",
863 "expand_wildcards",
864 "explain",
865 "from",
866 "human",
867 "ignore_throttled",
868 "ignore_unavailable",
869 "lenient",
870 "max_concurrent_shard_requests",
871 "pre_filter_shard_size",
872 "preference",
873 "q",
874 "request_cache",
875 "rest_total_hits_as_int",
876 "routing",
877 "scroll",
878 "search_type",
879 "seq_no_primary_term",
880 "size",
881 "sort",
882 "stats",
883 "stored_fields",
884 "suggest_field",
885 "suggest_mode",
886 "suggest_size",
887 "suggest_text",
888 "terminate_after",
889 "timeout",
890 "track_scores",
891 "track_total_hits",
892 "typed_keys",
893 "version"
894
895 See the search reference
896 <http://www.elastic.co/guide/en/elasticsearch/reference/current/search-
897 request-body.html> for more information.
898
899 Also see "send_get_body_as" in Search::Elasticsearch::Transport.
900
901 "count()"
902 $results = $e->count(
903 index => 'index' | \@indices, # optional
904 type => 'type' | \@types, # optional
905
906 body => { query } # optional
907 )
908
909 The "count()" method returns the total count of all documents matching
910 the query:
911
912 $results = $e->count(
913 body => {
914 query => {
915 match => { title => 'Elasticsearch clients' }
916 }
917 }
918 );
919
920 Query string parameters:
921 "allow_no_indices",
922 "analyze_wildcard",
923 "analyzer",
924 "default_operator",
925 "df",
926 "error_trace",
927 "expand_wildcards",
928 "human",
929 "ignore_throttled",
930 "ignore_unavailable",
931 "lenient",
932 "lowercase_expanded_terms"
933 "min_score",
934 "preference",
935 "q",
936 "routing",
937 "terminate_after"
938
939 See the count docs
940 <http://www.elastic.co/guide/en/elasticsearch/reference/current/search-
941 count.html> for more information.
942
943 "search_template()"
944 $results = $e->search_template(
945 index => 'index' | \@indices, # optional
946 type => 'type' | \@types, # optional
947
948 body => { search params } # required
949 );
950
951 Perform a search by specifying a template (either predefined or defined
952 within the "body") and parameters to use with the template, eg:
953
954 $results = $e->search_template(
955 body => {
956 source => {
957 query => {
958 match => {
959 "{{my_field}}" => "{{my_value}}"
960 }
961 },
962 size => "{{my_size}}"
963 },
964 params => {
965 my_field => 'foo',
966 my_value => 'bar',
967 my_size => 6
968 }
969 }
970 );
971
972 See the search template docs
973 <http://www.elastic.co/guide/en/elasticsearch/reference/current/search-
974 template.html> for more information.
975
976 Query string parameters:
977 "allow_no_indices",
978 "error_trace",
979 "expand_wildcards",
980 "explain",
981 "human",
982 "ignore_throttled",
983 "ignore_unavailable",
984 "preference",
985 "profile",
986 "rest_total_hits_as_int",
987 "scroll",
988 "search_type",
989 "typed_keys"
990
991 "render_search_template()"
992 $response = $e->render_search_template(
993 id => 'id', # optional
994 body => { template } # optional
995 );
996
997 Renders the template, filling in the passed-in parameters and returns
998 the resulting JSON, eg:
999
1000 $results = $e->render_search_template(
1001 body => {
1002 source => {
1003 query => {
1004 match => {
1005 "{{my_field}}" => "{{my_value}}"
1006 }
1007 },
1008 size => "{{my_size}}"
1009 },
1010 params => {
1011 my_field => 'foo',
1012 my_value => 'bar',
1013 my_size => 6
1014 }
1015 }
1016 );
1017
1018 See the search template docs
1019 <http://www.elastic.co/guide/en/elasticsearch/reference/current/search-
1020 template.html> for more information.
1021
1022 "scroll()"
1023 $results = $e->scroll(
1024 scroll => '1m',
1025 body => {
1026 scroll_id => $id
1027 }
1028 );
1029
1030 When a "search()" has been performed with the "scroll" parameter, the
1031 "scroll()" method allows you to keep pulling more results until the
1032 results are exhausted.
1033
1034 See "scroll_helper()" and Search::Elasticsearch::Client::7_0::Scroll
1035 for a helper utility which makes managing scroll requests much easier.
1036
1037 Query string parameters:
1038 "error_trace",
1039 "human",
1040 "rest_total_hits_as_int",
1041 "scroll",
1042 "scroll_id"
1043
1044 See the scroll docs
1045 <http://www.elastic.co/guide/en/elasticsearch/reference/current/search-
1046 request-scroll.html> and the search_type docs
1047 <http://www.elastic.co/guide/en/elasticsearch/reference/current/search.html/search-
1048 request-search-type.html> for more information.
1049
1050 "clear_scroll()"
1051 $response = $e->clear_scroll(
1052 body => {
1053 scroll_id => $id | \@ids # required
1054 }
1055 );
1056
1057 The "clear_scroll()" method can clear unfinished scroll requests,
1058 freeing up resources on the server.
1059
1060 "scroll_helper()"
1061 $scroll_helper = $e->scroll_helper( @args );
1062
1063 Returns a new instance of the class specified in the
1064 "scroll_helper_class", which defaults to
1065 Search::Elasticsearch::Client::7_0::Scroll.
1066
1067 "msearch()"
1068 $results = $e->msearch(
1069 index => 'default_index' | \@indices, # optional
1070 type => 'default_type' | \@types, # optional
1071
1072 body => [ searches ] # required
1073 );
1074
1075 The "msearch()" method allows you to perform multiple searches in a
1076 single request. Similar to the "bulk()" request, each search request
1077 in the "body" consists of two hashes: the metadata hash then the search
1078 request hash (the same data that you'd specify in the "body" of a
1079 "search()" request). For instance:
1080
1081 $results = $e->msearch(
1082 index => 'default_index',
1083 type => ['default_type_1', 'default_type_2'],
1084 body => [
1085 # uses defaults
1086 {},
1087 { query => { match_all => {} }},
1088
1089 # uses a custom index
1090 { index => 'not_the_default_index' },
1091 { query => { match_all => {} }}
1092 ]
1093 );
1094
1095 Query string parameters:
1096 "error_trace",
1097 "human",
1098 "max_concurrent_searches",
1099 "max__concurrent_shard_requests",
1100 "pre_filter_shard_size",
1101 "rest_total_hits_as_int",
1102 "search_type",
1103 "typed_keys"
1104
1105 See the msearch docs
1106 <http://www.elastic.co/guide/en/elasticsearch/reference/current/search-
1107 multi-search.html> for more information.
1108
1109 "msearch_template()"
1110 $results = $e->msearch_template(
1111 index => 'default_index' | \@indices, # optional
1112 type => 'default_type' | \@types, # optional
1113
1114 body => [ search_templates ] # required
1115 );
1116
1117 The "msearch_template()" method allows you to perform multiple searches
1118 in a single request using search templates. Similar to the "bulk()"
1119 request, each search request in the "body" consists of two hashes: the
1120 metadata hash then the search request hash (the same data that you'd
1121 specify in the "body" of a "search()" request). For instance:
1122
1123 $results = $e->msearch(
1124 index => 'default_index',
1125 type => ['default_type_1', 'default_type_2'],
1126 body => [
1127 # uses defaults
1128 {},
1129 { source => { query => { match => { user => "{{user}}" }}} params => { user => 'joe' }},
1130
1131 # uses a custom index
1132 { index => 'not_the_default_index' },
1133 { source => { query => { match => { user => "{{user}}" }}} params => { user => 'joe' }},
1134 ]
1135 );
1136
1137 Query string parameters:
1138 "error_trace",
1139 "human",
1140 "max_concurrent_searches",
1141 "rest_total_hits_as_int",
1142 "search_type",
1143 "typed_keys"
1144
1145 See the msearch-template docs
1146 <http://www.elastic.co/guide/en/elasticsearch/reference/current/search-
1147 multi-search.html> for more information.
1148
1149 "explain()"
1150 $response = $e->explain(
1151 index => 'my_index', # required
1152 type => 'my_type', # required
1153 id => 123, # required
1154
1155 body => { search } # required
1156 );
1157
1158 The "explain()" method explains why the specified document did or did
1159 not match a query, and how the relevance score was calculated. For
1160 instance:
1161
1162 $response = $e->explain(
1163 index => 'my_index',
1164 type => 'my_type',
1165 id => 123,
1166 body => {
1167 query => {
1168 match => { title => 'Elasticsearch clients' }
1169 }
1170 }
1171 );
1172
1173 Query string parameters:
1174 "_source",
1175 "_source_excludes",
1176 "_source_includes",
1177 "analyze_wildcard",
1178 "analyzer",
1179 "default_operator",
1180 "df",
1181 "error_trace",
1182 "human",
1183 "lenient",
1184 "parent",
1185 "preference",
1186 "q",
1187 "routing",
1188 "stored_fields"
1189
1190 See the explain docs
1191 <http://www.elastic.co/guide/en/elasticsearch/reference/current/search-
1192 explain.html> for more information.
1193
1194 "field_caps()"
1195 $response = $e->field_caps(
1196 index => 'index' | \@indices, # optional
1197 body => { filters } # optional
1198 );
1199
1200 The "field-caps" API returns field types and abilities, merged across
1201 indices.
1202
1203 Query string parameters:
1204 "allow_no_indices",
1205 "error_trace",
1206 "expand_wildcards",
1207 "fields",
1208 "human",
1209 "ignore_unavailable"
1210
1211 See the field-caps docs
1212 <http://www.elastic.co/guide/en/elasticsearch/reference/current/search-
1213 field-caps.html> for more information.
1214
1215 "search_shards()"
1216 $response = $e->search_shards(
1217 index => 'index' | \@indices, # optional
1218 )
1219
1220 The "search_shards()" method returns information about which shards on
1221 which nodes will execute a search request.
1222
1223 Query string parameters:
1224 "allow_no_indices",
1225 "error_trace",
1226 "expand_wildcards",
1227 "human",
1228 "ignore_unavailable",
1229 "local",
1230 "preference",
1231 "routing"
1232
1233 See the search-shards docs
1234 <http://www.elastic.co/guide/en/elasticsearch/reference/current/search-
1235 shards.html> for more information.
1236
1237 "rank_eval()"
1238 $result = $e->rank_eval(
1239 index => 'index' | \@indices, # optional
1240 body => {...} # required
1241 );
1242
1243 The ranking evaluation API provides a way to execute test cases to
1244 determine whether search results are improving or worsening.
1245
1246 Query string parameters:
1247 "allow_no_indices",
1248 "error_trace",
1249 "expand_wildcards",
1250 "filter_path",
1251 "human",
1252 "ignore_unavailable"
1253
1254 See the rank-eval docs
1255 <https://www.elastic.co/guide/en/elasticsearch/reference/current/search-
1256 rank-eval.html> for more information.
1257
1259 "delete_by_query()"
1260 $response = $e->delete_by_query(
1261 index => 'index' | \@indices, # optional
1262 type => 'type' | \@types, # optional,
1263 body => { delete-by-query } # required
1264 );
1265
1266 The "delete_by_query()" method deletes all documents which match the
1267 specified query.
1268
1269 Query string parameters:
1270 "_source",
1271 "_source_excludes",
1272 "_source_includes",
1273 "allow_no_indices",
1274 "analyze_wildcard",
1275 "analyzer",
1276 "conflicts",
1277 "default_operator",
1278 "df",
1279 "error_trace",
1280 "expand_wildcards",
1281 "from",
1282 "human",
1283 "ignore_unavailable",
1284 "lenient",
1285 "preference",
1286 "q",
1287 "refresh",
1288 "request_cache",
1289 "requests_per_second",
1290 "routing",
1291 "scroll",
1292 "scroll_size",
1293 "search_timeout",
1294 "search_type",
1295 "size",
1296 "slices",
1297 "sort",
1298 "stats",
1299 "terminate_after",
1300 "version",
1301 "timeout",
1302 "wait_for_active_shards",
1303 "wait_for_completion"
1304
1305 See the delete-by-query docs
1306 <https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-
1307 delete-by-query.html> for more information.
1308
1309 "delete_by_query_rethrottle()"
1310 $response = $e->delete_by_query_rethrottle(
1311 task_id => 'id' # required
1312 requests_per_second => num
1313 );
1314
1315 The "delete_by_query_rethrottle()" API is used to dynamically update
1316 the throtting of an existing delete-by-query request, identified by
1317 "task_id".
1318
1319 Query string parameters:
1320 "error_trace",
1321 "filter_path",
1322 "human",
1323 "requests_per_second"
1324
1325 See the delete-by-query-rethrottle docs
1326 <https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-
1327 delete-by-query.html> for more information.
1328
1329 "reindex()"
1330 $response = $e->reindex(
1331 body => { reindex } # required
1332 );
1333
1334 The "reindex()" API is used to index documents from one index or
1335 multiple indices to a new index.
1336
1337 Query string parameters:
1338 "error_trace",
1339 "human",
1340 "refresh",
1341 "requests_per_second",
1342 "slices",
1343 "timeout",
1344 "wait_for_active_shards",
1345 "wait_for_completion"
1346
1347 See the reindex docs
1348 <https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-
1349 reindex.html> for more information.
1350
1351 "reindex_rethrottle()"
1352 $response = $e->delete_by_query_rethrottle(
1353 task_id => 'id', # required
1354 requests_per_second => num
1355 );
1356
1357 The "reindex_rethrottle()" API is used to dynamically update the
1358 throtting of an existing reindex request, identified by "task_id".
1359
1360 Query string parameters:
1361 "error_trace",
1362 "filter_path",
1363 "human",
1364 "requests_per_second"
1365
1366 See the reindex-rethrottle docs
1367 <https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-
1368 reindex.html> for more information.
1369
1370 "update_by_query()"
1371 $response = $e->update_by_query(
1372 index => 'index' | \@indices, # optional
1373 type => 'type' | \@types, # optional,
1374 body => { update-by-query } # optional
1375 );
1376
1377 The "update_by_query()" API is used to bulk update documents from one
1378 index or multiple indices using a script.
1379
1380 Query string parameters:
1381 "_source",
1382 "_source_excludes",
1383 "_source_includes",
1384 "allow_no_indices",
1385 "analyze_wildcard",
1386 "analyzer",
1387 "conflicts",
1388 "default_operator",
1389 "df",
1390 "error_trace",
1391 "expand_wildcards",
1392 "from",
1393 "human",
1394 "ignore_unavailable",
1395 "lenient",
1396 "pipeline",
1397 "preference",
1398 "q",
1399 "refresh",
1400 "request_cache",
1401 "requests_per_second",
1402 "routing",
1403 "scroll",
1404 "scroll_size",
1405 "search_timeout",
1406 "search_type",
1407 "size",
1408 "slices",
1409 "sort",
1410 "stats",
1411 "terminate_after",
1412 "timeout",
1413 "version",
1414 "version_type",
1415 "wait_for_active_shards",
1416 "wait_for_completion"
1417
1418 See the update_by_query docs
1419 <https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-
1420 update-by-query.html> for more information.
1421
1422 "update_by_query_rethrottle()"
1423 $response = $e->update_by_query_rethrottle(
1424 task_id => 'id' # required
1425 requests_per_second => num
1426 );
1427
1428 The "update_by_query_rethrottle()" API is used to dynamically update
1429 the throtting of an existing update-by-query request, identified by
1430 "task_id".
1431
1432 Query string parameters:
1433 "error_trace",
1434 "filter_path",
1435 "human",
1436 "requests_per_second"
1437
1438 See the update-by-query-rethrottle docs
1439 <https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-
1440 update-by-query.html> for more information.
1441
1443 Elasticsearch allows you to store scripts in the cluster state and
1444 reference them by id. The methods to manage indexed scripts are as
1445 follows:
1446
1447 "put_script()"
1448 $result = $e->put_script(
1449 id => 'id', # required
1450 context => $context, # optional
1451 body => { script } # required
1452 );
1453
1454 The "put_script()" method is used to store a script in the cluster
1455 state. For instance:
1456
1457 $result = $e->put_scripts(
1458 id => 'hello_world',
1459 body => {
1460 script => {
1461 lang => 'painless',
1462 source => q(return "hello world")
1463 }
1464 }
1465 );
1466
1467 Query string parameters:
1468 "error_trace",
1469 "human"
1470
1471 See the indexed scripts docs
1472 <http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-
1473 scripting.html#_indexed_scripts> for more.
1474
1475 "get_script()"
1476 $script = $e->get_script(
1477 id => 'id', # required
1478 );
1479
1480 Retrieve the indexed script from the cluster state.
1481
1482 Query string parameters:
1483 "error_trace",
1484 "human",
1485 "master_timeout"
1486
1487 See the indexed scripts docs
1488 <http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-
1489 scripting.html#_indexed_scripts> for more.
1490
1491 "delete_script()"
1492 $script = $e->delete_script(
1493 id => 'id', # required
1494 );
1495
1496 Delete the indexed script from the cluster state.
1497
1498 Query string parameters:
1499 "error_trace",
1500 "human",
1501 "master_timeout",
1502 "timeout"
1503
1504 See the indexed scripts docs
1505 <http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-
1506 scripting.html#_indexed_scripts> for more.
1507
1508 "scripts_painless_execute()"
1509 $result = $e->scripts_painless_execute(
1510 body => {...} # required
1511 );
1512
1513 The Painless execute API allows an arbitrary script to be executed and
1514 a result to be returned.
1515
1516 Query string parameters:
1517 "error_trace",
1518 "filter_path",
1519 "human"
1520
1521 See the painless execution docs
1522 <https://www.elastic.co/guide/en/elasticsearch/painless/current/painless-
1523 execute-api.html> for more.
1524
1526 Enrico Zimuel <enrico.zimuel@elastic.co>
1527
1529 This software is Copyright (c) 2020 by Elasticsearch BV.
1530
1531 This is free software, licensed under:
1532
1533 The Apache License, Version 2.0, January 2004
1534
1535
1536
1537perl v5.32.1 S2e0a2r1c-h0:1:-E2l7asticsearch::Client::7_0::Direct(3)