Data::AnyXfer::Elastic::DSL
Data::AnyXfer::Elastic::DSL contains helpful methods to help reduce the verbosity of Elasticsearch queries through its Domain Specific Language (DSL). These methods can be used in both filters and query clauses; adjusting additional Elasticsearch arguments accordingly.
Query DSL: http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl.html
use constant DSL => 'Data::AnyXfer::Elastic::DSL'; my $exists = DSL->exists('location'); my $match = DSL->match( 'name', 'George' ); my $match_phrase = DSL->match_phrase( 'Vonnegut', 'So it goes.' ); my $missing = DSL->missing('property_reference'); my $range = DSL->range( 'age', gte => 16, lte => 25 ); my $regexp = DSL->regexp( 'postcode_short', value => 'E.*' ); my $term = DSL->term( 'name', value => 'foxtons', boost => 1 ); my $terms = DSL->terms( 'office', values => [ 1, 2, 3 ] ); my $geo_bounding_box = DSL->geo_bounding_box( 'pin.location', top_left => { lat => 50, lon => 0 }, bottom_right => { lat => 49, lon => -0.1 } ); my $geo_distance = DSL->geo_distance( 'pin.location', distance => '100km', lat => 40, lon => -70 ); my $geo_polygon = DSL->geo_polygon( 'pin.location', points => [ [ -70, 40 ], [ -80, 30 ], [ -90, 20 ] ], _cache => 1, ); my $geo_shape = DSL->geo_shape( 'pin.location', "coordinates" : [ [ [[102.0, 2.0], [103.0, 2.0], [103.0, 3.0], [102.0, 3.0], [102.0, 2.0]] ], [ [[100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0]], [[100.2, 0.2], [100.8, 0.2], [100.8, 0.8], [100.2, 0.8], [100.2, 0.2]] ] ], type => 'multipolygon' );
range match regexp geo_bounding_box
The are common methods that have the same interface( $field, %arguements ):
Defines the field name to search by.
This hash takes all optional Elasticsearch options such as boost and _cache; in addition to specific arguements for the filter/query clause.
DSL->exists( $field );
Returns a exists clause.
DSL->geo_distance( $field, lat => 40, lon => 20, %es_args );
Returns a geo distance clause.
DSL->term( $field, points => [...] %es_args );
Returns a geo polygon filter clause.
DSL->term( $field, coordinates => [...] %es_args );
Returns a geo shape filter clause.
DSL->match_phrase( $field, $phrase );
Returns a match_phrase clause.
DSL->missing( $field );
Returns a field missing clause
DSL->term( $field, value => 'criteria', %es_args );
Returns a term clause.
DSL->terms( $field, values => \@criteria, %es_args );
Returns a terms clause.
DSL->format_datetime('2001-10-02'); # returns 2001-10-02 23:59:59 DSL->format_datetime( Datetime->new ); DSL->format_datetime( london_now );
This method returns a datetime string in the format of yyyy-mm-dd hh:mm:ss for use in Elasticsearch queries. It accepts any DateTime object or a string in the format yyyy-mm-dd. Defaults to now().
This software is copyright (c) 2019, Anthony Lucas.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
To install Data::AnyXfer, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Data::AnyXfer
CPAN shell
perl -MCPAN -e shell install Data::AnyXfer
For more information on module installation, please visit the detailed CPAN module installation guide.