summaryrefslogtreecommitdiff
path: root/docs/perl/index.asciidoc
blob: 30adee262b53c73cbb418a9e77a191460fb26bc3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
= Elasticsearch.pm

== Overview

Elasticsearch.pm is the official Perl API for Elasticsearch. The full
documentation is available on https://metacpan.org/module/Elasticsearch.

It can be installed with:

[source,sh]
------------------------------------
cpanm Elasticsearch
------------------------------------

=== Features

This client provides:

* Full support for all Elasticsearch APIs

* HTTP backend (currently synchronous only - Any::Event support will be added later)

* Robust networking support which handles load balancing, failure detection and failover

* Good defaults

* Helper utilities for more complex operations, such as bulk indexing, scrolled searches and reindexing.

* Logging support via Log::Any

* Compatibility with the official clients for Python, Ruby, PHP and Javascript

* Easy extensibility

== Synopsis

[source,perl]
------------------------------------
use Elasticsearch;

# Connect to localhost:9200:
my $e = Elasticsearch->new();

# Round-robin between two nodes:
my $e = Elasticsearch->new(
    nodes => [
        'search1:9200',
        'search2:9200'
    ]
);

# Connect to cluster at search1:9200, sniff all nodes and round-robin between them:
my $e = Elasticsearch->new(
    nodes    => 'search1:9200',
    cxn_pool => 'Sniff'
);

# Index a document:
$e->index(
    index   => 'my_app',
    type    => 'blog_post',
    id      => 1,
    body    => {
        title   => 'Elasticsearch clients',
        content => 'Interesting content...',
        date    => '2013-09-24'
    }
);

# Get the document:
my $doc = $e->get(
    index   => 'my_app',
    type    => 'blog_post',
    id      => 1
);

# Search:
my $results = $e->search(
    index => 'my_app',
    body  => {
        query => {
            match => { title => 'elasticsearch' }
        }
    }
);
------------------------------------

[[v0_90]]
== Elasticsearch 0.90.* and earlier

The current version of the client supports the Elasticsearch 1.0 branch by
default, which is not backwards compatible with the 0.90 branch.

If you need to talk to a version of Elasticsearch before 1.0.0,
please use `Elasticsearch::Client::0_90::Direct` as follows:

[source,perl]
------------------------------------
    $es = Elasticsearch->new(
        client => '0_90::Direct'
    );
------------------------------------


== Reporting issues

The GitHub repository is http://github.com/elasticsearch/elasticsearch-perl
and any issues can be reported on the issues list at
http://github.com/elasticsearch/elasticsearch-perl/issues.

== Contributing

Open source contributions are welcome. Please read our
https://github.com/elasticsearch/elasticsearch-perl/blob/master/CONTRIBUTING.asciidoc[guide to contributing].

== Copyright and License

This software is Copyright (c) 2013 by Elasticsearch BV.

This is free software, licensed under:
https://github.com/elasticsearch/elasticsearch-perl/blob/master/LICENSE.txt[The Apache License Version 2.0].