Elastica is a PHP client for elasticsearch

Related tags

Search Elastica
Overview

Elastica: elasticsearch PHP Client

Latest Stable Version Build Status codecov.io Dependency Status Scrutinizer Code Quality Total Downloads Join the chat at https://gitter.im/ruflin/Elastica

All documentation for Elastica can be found under Elastica.io. If you have questions, don't hesitate to ask them on Stackoverflow and add the Tag "Elastica" or in our Gitter channel. All library issues should go to the issue tracker from github.

Compatibility

This release is compatible with all Elasticsearch 7.0 releases and onwards. It was tested with version 7.3.0.

Contributing

Contributions are always welcome. For details on how to contribute, check the CONTRIBUTING file.

Versions & Dependencies

This project tries to follow Elasticsearch in terms of End of Life and maintenance since 5.x

Elastica ElasticSearch elasticsearch-php PHP
7.x 7.x ^7.0 ^7.2 || ^8.0
7.0 7.x ^7.0 ^7.2
6.x 6.x ^6.0 ^7.0
5.x (unmaintained) 5.x ^5.0 >=5.6
3.2.3 (unmaintained) 2.4.0 no >=5.4
2.x (unmaintained) 1.7.2 no >=5.3.3

Comments
  • Elastica\Filter\Nested should be returned back

    Elastica\Filter\Nested should be returned back

    It's not possible to filter nested objects without Elastica\Filter\Nested.

    Eg. Elastica\Query\Filtered::setFilter() requires \Elastica\Filter\AbstractFilter so it's not possible to use Elastica\Query\Nested.

    bug enhancement 
    opened by kukulich 52
  • Start a 5.3 branch, including namespacing ?

    Start a 5.3 branch, including namespacing ?

    Since PSR-1 — #218 is merged and PSR-2 — #219 will probably be soon, I would like to know if someone would be interested in starting a 5.3 branch where we could switch to namespaces and use new features of 5.3 like Closure. I don’t know how exactly yet, it is just an example.

    I volunteer to do it, but I’ll probably need some collaboration to maintain it since there will be patches from master to port.

    Cheers !

    Related: #217

    opened by lavoiesl 45
  • [POC/RFC] Extract Connection logic out of the Client

    [POC/RFC] Extract Connection logic out of the Client

    As part of the SOLID principles is the Single Responsibility principle which I try to follow in designing services. It is my believe the Client shouldnt know anything about the internal workings of the ConnectionPool.

    In this PR, I've removed quite a bit of "magic" and made creation of Connection objects and the ConnectionPool explicit - but this is about starting a discussion (along with #1069) about direction. I would expect to add helpers to simplify the default setup of these classes for 90% of the use cases encountered.

    Is this something I should explore further and get to a working state where tests pass?

    opened by merk 38
  • QueryBuilder

    QueryBuilder

    Hi, after the ScanAndScoll-Iterator I wrote a QueryBuilder for Elastica!

    Goals

    • full DSL support
    • version check (is that command available in my elasticsearch installation?)
    • convenience (autocomplete, links to doc, good exception messages)
    • extendable (add/overwrite parts of the DSL)

    Implementation

    I took the idea from predis, because they have a similar situation:

    1. Every redis command is represented by a class in predis (like in Elastica: every Query/Filter/... has a class).
    2. They have Profile-Classes (I called them Version) which contains all supported commands of a Version.
    3. To execute a command via Client-Class predis uses __call() magic function to check whether or not that command is supported in configured version.

    My implementation is different in some ways:

    DSL part classes

    The existent command classes in Elastica can be used for QueryBuilder because they have a fluent interface. So I only had to create wrapper classes to easily access/construct these classes.

    I created one class for each elasticsearch DSL part (Query, Filter, Aggregation, Suggesters) which constructs every existent Elastica-Object with a convenient method definition. You can find this classes in Elastica\QueryBuilder\DSL.

    This is the heart of QueryBuilder and all other stuff is optional. If you don't want the Version-check you could just use this classes:

    $queryDSL = new \Elastica\QueryBuilder\DSL\Query();
    $queryDSL->match('field', 'value'); // returns Elastica\Query\Match
    

    I added every available method according to elasticsearch documentation to the DSL classes. In case a method is not implemented in Elastica (e.g. query "custom_filters_score") you get a Elastica\Exception\NotImplementedException.

    Most of the DSL methods just pipe the required Constructor arguments to the class, but I changed some method definitions for convenience reasons (e.g. Elastica\QueryBuilder\DSL\Query::match())

    There is only one single Filter, that causes problems: Elastica\QueryBuilder\DSL\Filter::geo_shape() 2 implementations exists: GeoShapeProvided, GeoShapePreIndexed. Maybe you have an idea to solve this?!

    QueryBuilder

    Elastica\QueryBuilder takes a Elastica\QueryBuilder\Version object and registers the default DSL objects. You can access this DSL object via __call() (names defined by Elastica\QueryBuilder\DSL::getType()) or via $qb->query() $qb->filter() $qb->agg() $qb->suggest() convenience methods.

    Add or overwrite a DSL object with Elastica\QueryBuilder::addDSL()

    Facade

    Version check is done by Elastica\QueryBuilder\Facade. It wraps a DSL with a Version object and acts like a whitelist firewall. Note that the QueryBuilder convenience methods have a "wrong" @return annotation to get correct autocomplete.

    The exception messages in Facade are very important, because they provide exact information about what is not working. For this reason I wrote tests for the exception messages.

    Tests

    I'm not sure if we should test DSL and Version classes, because they are basicly configurations. The actual work is done by the returned objects and they are tested pretty well. I would like to discuss this!

    I added a showcase for QueryBuider usage in Elastica/Test/QueryBuilderTest::testQueryBuilder().

    Conclusion

    I'm open to critics, even if you want major changes. Lets discuss the QueryBuilder topic without any restrictions, because I think a QueryBuilder is a very important functionallity for a Client library. We can just merge my current implementation or see it as a first proposal and continue working on it.

    opened by webdevsHub 36
  • Couldnt connect to host, ElasticSearch down?

    Couldnt connect to host, ElasticSearch down?

    Hi everybody !

    I try to use ElasticaBundle with symfony and I get this following error :

    Couldnt connect to host, ElasticSearch down?

    Please any one know how to fixe it ?

    Thank you for your help

    opened by shevaton7 35
  • ES-7: remove type

    ES-7: remove type

    Todo:

    • [x] Remove mapping's include_type_name (from #1654 )
    • [x] Deprecate usage of Type object
    • [x] copy setMapping() from Type to Index
    • [x] copy getDocument() from Type to Index
    • [x] copy deleteById() fromTypetoIndex`
    • [x] copy more methods from Type to Index
    • [x] Cleanup Client methods requiring Type #1668
    • [x] Remove Type class (<== needs clarification)
    • [x] Cleanup Search->addType() #1669
    • [x] Cleanup Search->addTypes() #1669
    • [x] Cleanup Bulk class from Type #1670
    • [x] Fix tests
    opened by thePanz 31
  • Geodistance filter, missing options

    Geodistance filter, missing options

    There are missing options:

    • distance_type
    • optimize_bbox

    Do you have any recommendation? Are class constants required? (arc, plane, memory, indexed, none)

    enhancement 
    opened by pierrre 31
  • PHP 7 Typehintings Tracker

    PHP 7 Typehintings Tracker

    In this issue I will update the work in progress.

    Namespaces:

    • [x] Elastica\Aggregation (https://github.com/ruflin/Elastica/pull/1549)
    • [x] Elastica\Bulk (https://github.com/ruflin/Elastica/pull/1550)
    • [x] Elastica\Cluster (https://github.com/ruflin/Elastica/pull/1551)
    • [x] Elastica\Connection (https://github.com/ruflin/Elastica/pull/1560)
    • [x] Elastica\Exception (https://github.com/ruflin/Elastica/pull/1568)
    • [x] Elastica\Index (https://github.com/ruflin/Elastica/pull/1569)
    • [x] Elastica\Multi (https://github.com/ruflin/Elastica/pull/1576)
    • [x] Elastica\Node (https://github.com/ruflin/Elastica/pull/1577)
    • [x] Elastica\Processor (https://github.com/ruflin/Elastica/pull/1579)
    • [x] Elastica\Query (https://github.com/ruflin/Elastica/pull/1582)
    • [x] Elastica\QueryBuilder (https://github.com/ruflin/Elastica/pull/1583)
    • [x] Elastica\Rescore (https://github.com/ruflin/Elastica/pull/1566)
    • [x] Elastica\ResultSet (https://github.com/ruflin/Elastica/pull/1565)
    • [x] Elastica\Script (https://github.com/ruflin/Elastica/pull/1564)
    • [x] Elastica\Suggest (https://github.com/ruflin/Elastica/pull/1562)
    • [x] Elastica\Transport (https://github.com/ruflin/Elastica/pull/1558)
    • [x] Elastica\Type (https://github.com/ruflin/Elastica/pull/1557)
    • [ ] Elastica base namespace

    Also tests will be updated.

    opened by massimilianobraglia 29
  • Upgrade to Elasticsearch 6.0

    Upgrade to Elasticsearch 6.0

    This issue is to track the open tasks to make Elastica fully compatible with elasticsearch 6.0. Elasticsearch introduces many breaking changes follow a list of things I discovered with 6.0. I think we should start from here, I've tried to replicate the same issue we created for ES5 upgrade. We should merge #1340 on master and start creating PR's on that (a I have a couple ready).

    At the moment there's a PR #1340 where I have skipped all the failing tests and tried to references some errors on ES documentation or directly to the ES source code on github.

    The main issues are related to the removal of multiple types per index: more or less 25 tests.

    • [x] Testing : Fix tests which are currently skipped because of incompatibility
    • [x] Join Fields implemented over hierarchy relationship between types
    • [x] New way of ingesting documents (through pipeline ingestion and ingestion-attachment plugin), with tests.
    • [x] Implement attachment processor
    • [x] Implement Pipeline & Processors
    • [x] ES 6 remove multiple type per indices. 6.0
    • [x] Remove attachment plugin
    • [x] drop php 5.x support
    • [x] switch elasticsearch-php to dev-master until they release a stable version for ES6 (the re-set a version on composer)
    • [x] ES 6 support only strict boolean type

    @ruflin and the others what do u think ?

    opened by p365labs 29
  • Migrate to Elasticsearch 2.0

    Migrate to Elasticsearch 2.0

    Elasticsearch 2.0 bring several BC breaks. Adaptions must be made. Here is a checklist of open issues:

    • [x] Status API was removed:
      • https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-status.html
      • https://www.elastic.co/guide/en/elasticsearch/reference/2.0/indices-status.html
    • [x] Thrift support was removed
    • [x] Facets were replaced by aggregations and removed -> Facets are removed from the code.
    • [x] Memcached support was removed
    • [x] Bulk UDP API has been removed
    • [x] Delete by query was moved to a plugin?
    • [x] Error handling got more extensive. Example:

    Before:

    {
      "error" : "IndexMissingException[[lkwer] missing]",
      "status" : 404
    }
    

    After

    {
      "error" : {
        "root_cause" : [ {
          "type" : "index_not_found_exception",
          "reason" : "no such index",
          "resource.type" : "index_or_alias",
          "resource.id" : "334",
          "index" : "334"
        } ],
        "type" : "index_not_found_exception",
        "reason" : "no such index",
        "resource.type" : "index_or_alias",
        "resource.id" : "334",
        "index" : "334"
      },
      "status" : 404
    }
    
    opened by ruflin 29
  • fix HttpAdapter after egeloen/http-adapter changes

    fix HttpAdapter after egeloen/http-adapter changes

    Streams have changed on PSR7 and egeloen/http-adapter. This change allows to work with this last version of egeloen/http-adapter.

    On a Symfony project it works on the production environnment but there is an error on the debugger of the playbloom/guzzle-bundle bundle. Maybe some changes are required on the bundle or Guzzle but i'd like to validate that before this PR is merged.

    opened by agallou 27
  • setTerms no longer normalize array parameters in 7.x

    setTerms no longer normalize array parameters in 7.x

    in 6.x https://github.com/ruflin/Elastica/blob/6.x/lib/Elastica/Query/Terms.php#L53

        public function setTerms($key, array $terms)
        {
            $this->_key = $key;
            $this->_terms = array_values($terms);
    
            return $this;
        }
    

    in 7.x https://github.com/ruflin/Elastica/blob/7.x/src/Query/Terms.php#L42

        public function setTerms(array $terms): self
        {
            return $this->setParam($this->field, $terms);
        }
    
        public function setParams(array $params)
        {
            $this->_params = $params;
    
            return $this;
        }
    

    Which no longer normalize the array.

    In normal usage of regular arrays there's no issue, but when an array elements were removed the terms generated aren't recognized properly by ES and results in failed to parse field error

    ex:

    $array = array(0, 1, 2, 3);php > $array = [0, 123, 456];;
    php > unset($array[0]);
    php > var_dump($array);
    php shell code:1:
    array(2) {
      [1] =>
      int(123)
      [2] =>
      int(456)
    }
    
    // query output {"1":123,"2":456}
    
    php > var_dump(array_values($array));
    php shell code:1:
    array(2) {
      [0] =>
      int(123)
      [1] =>
      int(456)
    }
    
    // query output [123,456]
    
    opened by pandafox 6
  • added experimental php 8.0 and elasticsearch 8.0

    added experimental php 8.0 and elasticsearch 8.0

    in order to move forward this https://github.com/ruflin/Elastica/issues/2011 created CI step, "experimental" (allow to fail) to collect information.

    opened by oleg-andreyev 1
  • Fix Elasticsearch 7 double array issue

    Fix Elasticsearch 7 double array issue

    What does this PR do?

    This throws an exception when you try to build an ES query with a deprecated format since ES 7.7.

    This would be a breaking change for anybody who uses ES prior to version 7.7.

    This PR will give developers the opportunities to find the breaking change by the line number in their code via the exception and prevent future queries in the old format.

    Opening PR early can add a test if it seems like a reasonable approach.

    Here is the demonstration of other people running into the same issue: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/32813

    This fixes an issue in Elasticsearch 7.7+ versions (#218324 (closed)). Previously the query parser was forgiving about nested arrays and would just automatically flatten them for you but now we need to flatten them ourselves. I did read about this in https://discuss.elastic.co/t/must-not-boolean-query-in-7-7/233269 but sadly they do not consider this a breaking change so it was not obvious the cause initially.

    # Example request
    GET /addresses/_search
    {
      "query": {
        "bool": {
          "should": [
            [
              {
                "terms": {
                  "Example": [
                    1,
                    2
                  ]
                }
              }
            ]
          ]
        }
      }
    }
    
    # Example response
    {
      "error" : {
        "root_cause" : [
          {
            "type" : "x_content_parse_exception",
            "reason" : "[5:9] [bool] failed to parse field [should]"
          }
        ],
        "type" : "x_content_parse_exception",
        "reason" : "[5:9] [bool] failed to parse field [should]",
        "caused_by" : {
          "type" : "illegal_state_exception",
          "reason" : "expected value but got [START_ARRAY]"
        }
      },
      "status" : 400
    }
    
    opened by farzadjafari 5
  • Mark classes as final

    Mark classes as final

    Thinking about 8.0 I think we should mark as many classes as possible with @final to let the user know that they will become final in 8.0. This will ease the maintenance (reducing the number of possible BC breaks) and we can always revert this if there are valid use cases.

    opened by franmomu 1
Releases(7.3.0)
  • 7.3.0(Nov 30, 2022)

    Changed

    • Use ramsey/composer-install to simplify CI jobs and test with the lowest set of dependencies #2113
    • Bumped elasticsearch/elasticsearch to 7.10 to be able to use OpenPointInTime class #2113
    • Updated php-cs-fixer to 3.9.5 #2110
    • Changed Elastica\Index\Settings::get adding ability to get default settings by @krasilnikovm #2115
    • Update AWSAuthV4 transport to sanitize host name for AWS requests before signing #2090
    • New method Elastica\Aggregation\Terms::setMissingBucket. For Composite Agg. Include in the response documents without a value for a given source. #2117
    • Increased PHPStan level to 5 by @franmomu #2108

    Removed

    • Removed CallbackStrategyTestHelper and ErrorsCollector from tests #2111

    Fixed

    • Fixed Query/Terms terms phpdoc from array<bool|float|int|string> to list<bool|float|int|string> #2118
    • Fixed Response to prevent throwing JSONParseException when the response is empty.

    New Contributors

    • @krasilnikovm made their first contribution in https://github.com/ruflin/Elastica/pull/2115
    • @jhuebner79 made their first contribution in https://github.com/ruflin/Elastica/pull/2090
    • @aribon-cs made their first contribution in https://github.com/ruflin/Elastica/pull/2125

    Full Changelog: https://github.com/ruflin/Elastica/compare/7.2.0...7.3.0

    Source code(tar.gz)
    Source code(zip)
  • 7.2.0(Aug 2, 2022)

    Backward Compatibility Breaks

    • Changed SetProcessor::setValue signature to allow to pass any type, if you are overriding this method you must update the signature removing the string type-hint by @franmomu #2082
    • Changed Settings::setMergePolicy signature to allow to pass int and string as argument 2, if you are overriding this method you must update the signature removing the string type-hint by @franmomu #2085

    Added

    • Added PHPStan at level 3 by @franmomu #2064
    • Added coverage check to CI by @franmomu #2071
    • Added string as a valid type for data in Request by @franmomu #2078
    • Added missing throws PHPDoc tags by @franmomu #2077
    • Added Search::addIndexByName(), Search::hasIndexByName() and Search::addIndicesByName() by @franmomu #2103

    Changed

    • Updated symfony/phpunit-bridge to 6.0 by @franmomu #2067
    • Updated php-cs-fixer to 3.8.0 #2074
    • Updated composer-normalize to 2.2.28 by @deguif #2084
    • Increased PHPStan level to 4 #2080
    • ExceptionInterface extends Throwable #2083
    • Changed value in SetProcessor to accept mixed instead of string by @franmomu #2082
    • Updated Query::create PHPDoc to include supported types and propagate it to callers by @franmomu #2088
    • Update some iterable types in PHPDoc to be more specific by @franmomu #2092
    • Updated AwsAuthV4Test adding assertions for exception type by @franmomu #2094

    Deprecated

    • Deprecated Elastica\Reindex::WAIT_FOR_COMPLETION_FALSE, use a boolean as parameter instead by @franmomu #2070
    • Passing anything else than a boolean as 1st argument to Reindex::setWaitForCompletion, pass a boolean instead by @franmomu #2070
    • Deprecated passing a string as 1st argument to Search::addIndex() and Search::hasIndex(), pass an Index instance instead by @franmomu #2103
    • Deprecated passing an array of string as 1st argument to Search::addIndices(), use an array of Index instances by @franmomu #2103

    Removed

    • Removed egeloen/http-adapter as suggested package since the project is abandoned by @franmomu #2069
    • Removed 0 as valid request data using Analyze API by @franmomu #2068
    • Removed dead code in AwsAuthV4Test by @franmomu #2073

    Fixed

    • Fixed some PHPDoc types adding null as possible value by @franmomu #2070 and #2087
    • Fixed passing wrong types to GapPolicyInterface::setGapPolicy(), Document::setDocAsUpsert() and Connection::setPort() methods by @franmomu #2081
    • Fixed Http PHPDoc adding \CurlHandle type for Curl connection by @franmomu #2086
    • Fixed case mismatch in method calls by @franmomu #2087
    • Fixed MoreLikeThis::setLike() PHPDoc allowing Document by @franmomu #2091
    • Fixed Term::setTerm() PHPDoc allowing scalar values for $value parameter by @franmomu #2094
    • Fixed DateHistogram deprecation: use fixed_internal or calendar_interval instead of interval by @VincentLanglet #2099

    New Contributors

    • @b1rdex made their first contribution in https://github.com/ruflin/Elastica/pull/2083

    Full Changelog: https://github.com/ruflin/Elastica/compare/7.1.5...7.2.0

    Source code(tar.gz)
    Source code(zip)
  • 6.2.1(Apr 14, 2022)

    Improvements

    • Solve PHP 8.1 deprecations for every class implementing Countable, Iterator or ArrayAccess by @VincentLanglet https://github.com/ruflin/Elastica/pull/2061

    Full Changelog: https://github.com/ruflin/Elastica/compare/6.2.0...6.2.1

    Source code(tar.gz)
    Source code(zip)
  • 7.1.5(Mar 29, 2022)

    Added

    • Added explicit return annotation to Elastica\Multi\ResultSet::current() and Elastica\Multi\ResultSet::offsetGet() by @franmomu 2056
    • Add throwing \Elastica\Exception\RequestEntityTooLargeException on HTTP-413 responses in \Elastica\Bulk by @Vetaxon 2055

    New Contributors

    • @Vetaxon made their first contribution in https://github.com/ruflin/Elastica/pull/2055

    Full Changelog: https://github.com/ruflin/Elastica/compare/7.1.4...7.1.5

    Source code(tar.gz)
    Source code(zip)
  • 7.1.4(Feb 14, 2022)

    Added

    • Added support for symfony/deprecation-contracts 3.0 by @rguennichi #2047
    • Added aggregation auto_date_histogram @andriinavrotskii #2051

    Fixed

    • Fixed version parameters for DeleteDocument by @pheyse24 #2048
    • Fixed version parameters for Index::addDocument() by @pidera #2050

    New Contributors

    • @rguennichi made their first contribution in https://github.com/ruflin/Elastica/pull/2047
    • @pheyse24 made their first contribution in https://github.com/ruflin/Elastica/pull/2048
    • @pidera made their first contribution in https://github.com/ruflin/Elastica/pull/2050
    • @andriinavrotskii made their first contribution in https://github.com/ruflin/Elastica/pull/2051

    Full Changelog: https://github.com/ruflin/Elastica/compare/7.1.3...7.1.4

    Source code(tar.gz)
    Source code(zip)
  • 7.1.3(Dec 9, 2021)

    Added

    • Added support for scripted upsert on bulk requests by @dsgrillo #1974
    • Added Elastica\Aggregation\CumulativeSum by @limenet #1987
    • Added ignore_failure option to suitable ingest processors by @deguif #2003
    • Added ignore_missing option to lowercase, remove, trim and uppercase processors by @deguif #2001
    • Added allow_duplicates option to append processor by @deguif #2004
    • Added bytes processor by @deguif #2008
    • Added indices_boost option to Elastica\Query by @deguif #2018
    • Added Elastica\Query\Terms::setBoost() method to configure boost by @deguif #2035
    • Added Elastica\Query\TermsSet query by @mamchyts #2020
    • Added terms_set in query builder by @deguif #2036
    • Added Elastica\Aggregation\Traits\BucketsPathTrait to configure buckets_path on aggregations by @deguif #2037 #2039
    • Allowed to configure a sub key when adding a param with Elastica\Param::addParam() by @deguif #2030

    Changed

    • Triggered deprecation in Elastica\Result::getType() method by @deguif #2016
    • Updated php-cs-fixer to 3.3.2 by @deguif #2022
    • Updated composer-normalize to 2.15.0 by @deguif #2021
    • Updated elasticsearch test version to 7.15.2 by @deguif #2027
    • Extracted setting gap policy to \Elastica\Aggregation\Traits\GapPolicyTrait and introduced \Elastica\Aggregation\GapPolicyInterface with constants for options by @stchr #2023
    • Extracted setting field to Elastica\Processor\Traits\FieldTrait by @deguif #2024
    • Extracted setting target_field to Elastica\Processor\Traits\TargetFieldTrait by @deguif #2026
    • Simplified github action matrix for continuous integration workflow by @deguif #2025

    Deprecated

    • Deprecated Elastica\Query\Common class, use Elastica\Query\MatchQuery instead by @deguif #2013
    • Deprecated Elastica\QueryBuilder\DSL\Query::common_terms(), use match() instead by @deguif #2013
    • Deprecated passing an int as 1st argument to Elastica\Search::setOptionsAndQuery(), pass an array with the key size instead by @deguif #2010
    • Deprecated cutoff_frequency option of Elastica\Query\MatchQuery by @deguif #2014
    • Deprecated cutoff_frequency option of Elastica\Query\MultiMatch by @deguif #2015
    • Deprecated Elastica\Bulk::toString(), Elastica\Bulk\Action::toString() and Elastica\Request::toString() methods, use __toString() method or cast to string instead by @deguif #2033
    • Deprecated not passing a buckets_path when constructing Elastica\Aggregation\AvgBucket, Elastica\Aggregation\Derivative, Elastica\Aggregation\NormalizeAggregation, Elastica\Aggregation\PercentilesBucket, Elastica\Aggregation\SerialDiff, Elastica\Aggregation\StatsBucket and Elastica\Aggregation\SumBucket by @deguif #2038
    • Deprecated not passing a method when constructing Elastica\Aggregation\NormalizeAggregation by @deguif #2040

    Removed

    • Removed remaining _type field usages by @deguif #2017
    • Removed Elastica\Bulk::$_type dead property by @deguif #2034
    • Removed Elasticsearch old version checks in tests by @deguif #2041

    Fixed

    • Fixed type-hint for Elastica\Search::setOptionsAndQuery() by @deguif #2009
    • Fixed terms query params resolution by @deguif #2032

    New Contributors

    • @stchr made their first contribution in https://github.com/ruflin/Elastica/pull/2023
    • @mamchyts made their first contribution in https://github.com/ruflin/Elastica/pull/2020
    • @limenet made their first contribution in https://github.com/ruflin/Elastica/pull/1987

    Full Changelog: https://github.com/ruflin/Elastica/compare/7.1.2...7.1.3

    Source code(tar.gz)
    Source code(zip)
  • 7.1.2(Oct 21, 2021)

    Backward Compatibility Breaks

    • Changed Elastica\Exception\JSONParseException inheritance, it now extends \JsonException instead of \RuntimeException #1949

    Added

    • Added Elastica\Aggregation\NormalizeAggregation #1956
    • Added Elastica\Suggest\Phrase::addDirectGenerator to align with ES specification #1964
    • Added support for psr/log 2.0 and 3.0 #1971
    • Added new optional 'case_insensitive' option to Elastica\Query\Wildcard #1894
    • Added Elastica\Result::getSort() fetching the "sort" property of results #1979
    • Added exposure of Point-In-Time ID for search responses in Elastica\ResultSet::getPointInTimeId() #1991
    • Added Elastica\Index::openPointInTime() for opening a PiT on the index #1994
    • Added possibility to specify PointInTime on Elastica\Query::setPointInTime() #1992
    • Added Elastica\Client::closePointInTime() for closing a PiT #1995

    Changed

    • Updated php-cs-fixer to 3.2.1 #1996, #1959,#1955
    • Using default Elasticsearch images for testing instead of OSS https://github.com/ruflin/Elastica/pull/1954

    Fixed

    • Fixed compatibility with guzzlehttp/psr7 version 2.x #2002
    • Fixed the assignment of version, seq_no and primary_term on getDocument #1973
    Source code(tar.gz)
    Source code(zip)
  • 6.2.0(Oct 8, 2021)

  • 7.1.1(Mar 24, 2021)

    Backward Compatibility Breaks

    • Changed Elastica\Query\MatchQuery::setFieldParam() signature to allow passing bool, float or int #1941
    • Changed Elastica\Query\MatchPhraseQuery::setFieldParam() signature to allow passing bool, float or int #1944

    Added

    • Excluded docker directory in .gitattributes #1938

    Changed

    • Included Content-Type HTTP header every time, whatever the content of the body is #1780
    • Changed Elastica\Status::indexExists(), Elastica\Status::aliasExists() and Elastica\Status::getIndicesWithAlias() signatures #1929
    • Replaced call_user_func() and call_user_func_array() by direct calls #1923
    • Replaced legacy constant CURLINFO_HTTP_CODE by CURLINFO_RESPONSE_CODE #1931
    • Updated php-cs-fixer to 2.18.3 #1915
    • Updated composer-normalize to 2.13.3 #1927

    Deprecated

    • Deprecated Elastica\Transport\HttpAdapter class #1940

    Fixed

    • Fixed wrong ltrim usage in guzzle transport #1783
    • Fixed _seq_no and _primary_term wrong initialization #1920
    • Fixed Elastica\Connection\StrategyInterface instance checks #1921
    • Fixed various PHPDoc annotations #1922
    • Fixed numeric index names are returned as int in Elastica\Status::getIndexNames() #1928
    • Fixed using raw array in post_filter #1950
    Source code(tar.gz)
    Source code(zip)
  • 6.1.5(Mar 24, 2021)

  • 6.1.4(Mar 17, 2021)

  • 6.1.3(Feb 17, 2021)

  • 6.1.2(Feb 16, 2021)

    Bugfixes

    • Always set the Guzzle base_uri to support connecting to multiple ES hosts. #1618 #1644

    Added

    • Added Elastica\Aggregation\WeightedAvg aggregation #1770
    • Added Elastica\Query\MatchQuery extending Elastica\Query\Match. This is the same as 7.x, which renamed the class for PHP 8.0 support, and makes supporting the use of ruflin/elastica 6.1 and 7.0 in the same project. #1898

    Improvements

    • Added missing Response information to Bulk/ResponseSet #1775

    Deprecated

    • Elastica\Query\Match has been deprecated in favour of Elastica\Query\MatchQuery. #1898
    Source code(tar.gz)
    Source code(zip)
  • 7.1.0(Feb 15, 2021)

    Backward Compatibility Breaks

    • Added a default value to Elastica\Aggregation\Range::setKeyed() and Elastica\Aggregation\PercentilesBucket::setKeyed() #1876
    • Removed type-hint to Elastica\Aggregation\Percentiles::setMissing() argument #1875
    • Allowed the Terms query to accept an array of bool, float, int and/or string #1872

    Added

    • Added auth_type parameter in the client class config to specify the type of authentication (allowed values are basic, digest, gssnegotiate, ntlm) #1790
    • Added if_seq_no / if_primary_term to replace version for optimistic concurrency control #1803
    • Added Elastica\Aggregation\PercentilesBucket aggregation #1806
    • Added weighted_avg to aggregations DSL #1814
    • Added support for defining a connection pool with DSN. Example: pool(http://127.0.0.1 http://127.0.0.2/bar?timeout=4) #1808
    • Added Elastica\Aggregation\Composite aggregation #1804
    • Added symfony/deprecation-contracts package to handle deprecations #1823
    • Added list_syntax CS rule #1854
    • Added native_constant_invocation CS rule #1833
    • Added static_lambda CS rule #1870
    • Added Elastica\Aggregation\DateRange::setTimezone() #1847
    • Added endpoint options support to Elastica\Index::create() #1859
    • Added Elastica\Aggregation\DateHistogram::setKeyed() #1876
    • Added Elastica\Aggregation\GeoDistance::setKeyed() #1876
    • Added Elastica\Aggregation\Histogram::setKeyed() #1876
    • Added Elastica\Aggregation\IpRange::setKeyed() #1876
    • Added Elastica\Aggregation\GeotileGridAggregation #1880
    • Added Elastica\Aggregation\Avg::setMissing(), Elastica\Aggregation\Cardinality::setMissing(), Elastica\Aggregation\DateRange::setMissing(), Elastica\Aggregation\DateHistogram::setMissing(), Elastica\Aggregation\ExtendedStats::setMissing(), Elastica\Aggregation\Histogram::setMissing(), Elastica\Aggregation\Max::setMissing(), Elastica\Aggregation\Min::setMissing(), Elastica\Aggregation\Stats::setMissing(), Elastica\Aggregation\Sum::setMissing(), Elastica\Aggregation\Terms::setMissing() #1876
    • Supported guzzlehttp/guzzle 7.x #1816
    • Supported PHP 8.0 #1794
    • Supported BC break on elasticsearch/elasticsearch version 7.4.0 #1864

    Changed

    • Allowed string such as wait_for to be passed to AbstractUpdateAction::setRefresh #1791
    • Allowed float values for connection timeout and connection connect-timeout, providing ms precision for those. Previous precision was second. #1868
    • Changed the return type of AbstractUpdateAction::getRefresh to boolean|string #1791
    • Reviewed options handling in Elastica\Index::create() #1822
    • Replaced deprecated exceptions request option by http_errors request option in Guzzle transport #1817
    • Run coding styles check on github action #1878
    • Run unit tests on github action #1882
    • Run functional tests on github action #1885
    • Updated php-cs-fixer to 2.16.4 #1830
    • Updated php-cs-fixer to 2.16.7 #1881
    • Updated php-cs-fixer to 2.17.3 #1895
    • Updated php-cs-fixer to 2.18.2 #1897
    • Used GuzzleHttp\RequestOptions constants for configuring request options #1820
    • Used new alias endpoints classes #1839
    • Used new cache endpoints classes #1840
    • Used new ingest pipeline endpoints classes #1834
    • Used new mapping endpoints classes #1845
    • Used new nodes endpoints classes #1863
    • Used new settings endpoints classes #1852

    Deprecated

    • Deprecated Elastica\Aggregation\Range::setKeyedResponse(), use setKeyed() instead #1848
    • Deprecated Elastica\Exception\ResponseException::getElasticsearchException(), use getResponse()::getFullError() instead #1829
    • Deprecated Elastica\QueryBuilder\DSL\Aggregation::global_agg(), use global() instead #1826
    • Deprecated Elastica\Util::getParamName() #1832
    • Deprecated all Processor class names in favor of suffixed class names #1893
    • Deprecated Match query class and introduced MatchQuery instead for PHP 8.0 compatibility reason #1799
    • Deprecated version/version_type options (deprecated in 6.7.0) and added if_seq_no / if_primary_term that replaced it
    • Deprecated passing bool or null as 2nd argument to Elastica\Index::create() #1828

    Removed

    • Removed HHVM proxy detection #1818

    Fixed

    • Fixed issue 1789
    • Fixed type-hint for Elastica\QueryBuilder\DSL\Aggregation::sampler() not consistent with the underlying constructor call #1815
    • Fixed Elastica\Util::toSnakeCase() with first letter being lower cased #1831
    • Fixed handling precision as string in Elastica\Aggregation\GeohashGrid::setPrecision() #1884
    • Fixed calling Elastica\Aggregation\Composite::addAfter() with the null value 1877
    • Replaced _routing and _retry_on_conflict by routing and retry_on_conflict in AbstractUpdateAction #1807
    Source code(tar.gz)
    Source code(zip)
  • 7.0.0(Jun 10, 2020)

    This is the first non beta release in the 7.0 cycle. Please check all the previous beta release changelogs for breaking changes.

    Added

    • Added Elastica\Aggregation\WeightedAvg aggregation #1770

    Changed

    • Added missing Response information to Bulk/ResponseSet #1776
    Source code(tar.gz)
    Source code(zip)
  • 7.0.0-beta.4(Mar 23, 2020)

    Backward Compatibility Breaks

    • If you're NOT using composer to manage your libraries: the root directory of the library's source code moved from lib/Elastica/ to src/.
    • The Wildcard::setValue() changed its signature: use it to set the value of the wildcard query only.
    • The Wildcard Query's constructor now requires the name and value properties.
    • The Terms Query's constructor now requires the field and terms properties.

    Added

    • Added AbstractTermsAggregation::setIncludeAsExactMatch() #1766
    • Added AbstractTermsAggregation::setExcludeAsExactMatch() #1766
    • Added AbstractTermsAggregation::setIncludeWithPartitions() #1766
    • Added Elastica\Reindex->setPipeline(Elastica\Pipeline $pipeline): void. The link between the reindex and the pipeline is solved when run() is called, and thus the pipeline given doesn't need to be created before calling setPipeline() #1752
    • Added Elastica\Reindex->setRefresh(string $value): void. It accepts REFRESH_* constants from its class #1752 and #1758
    • Added Elastica\Reindex->setQuery(Elastica\Query\AbstractQuery $query): void #1752
    • Added constants PIPELINE, REFRESH_TRUE, REFRESH_FALSE, REFRESH_WAIT_FOR, SLICES and SLICES_AUTO to Elastica\Reindex #1752
    • Added Elastica\Pipeline->getId(): ?string #1752
    • Added Elastica\Aggregation\ExtendedStatsBucket aggregation #1756

    Changed

    • Changed Terms::setTerms() signature: it now accepts a list of strings only #1765
    • Changed Terms::setTermsLookup() signature: index, path and id are now required arguments #1765
    • Changed Wildcard::setValue() and constructor's signature: added more specific Wildcard::setBoost() and Wildcard::setRewrite methods
    • Updated PHP coding standards to adhere to PSR-12 #1760
    • Updated to PHPUnit v8.5 #1759
    • Refactored code structure: use src/ and tests/ folders #1755
    • Require elastica-php library >= v7.1.1, fixes an issue on Ingestion/Put() type-hinting
    • Require guzzle >= v6.3 as development library: fixes issues on PHP >= 7.2
    • Require phpunit >= v7.5, fixes deprecations in with PHP 7.3
    • Scroll is now throwing an exception when calling current() on an invalid iteration: always call valid() before accessing the current item, as documented in PHP's Iterator documentation #1749

    Removed

    • Removed unsupported flags from AbstractTermsAggregation::setInclude() #1766
    • Removed unsupported flags from AbstractTermsAggregation::setExclude() #1766
    • Terms::setMinimumMatch() has been removed as not supported by ES 7.x
    Source code(tar.gz)
    Source code(zip)
  • 7.0.0-beta.3(Jan 16, 2020)

    • Marked Elastica 5.x as unmaintained

    Bugfixes

    • Fix Search::count() not counting all results #1746
    • Fixed handling of Search::OPTION_SEARCH_IGNORE_UNAVAILABLE inside Scroll object

    Added

    • Added DiversifiedSampler aggregation #1735
    • Added \Elastica\Query\DistanceFeature #1730
    • Added support for injecting a callable AWS credential provider to use static, cached, or custom-sourced credentials #1667

    Improvements

    • Scroll releases previous ResultSet from memory before calling ES for next data batch #1740
    Source code(tar.gz)
    Source code(zip)
  • 7.0.0-beta2(Dec 10, 2019)

    Backward Compatibility Breaks

    • The class \Elastica\QueryBuilder\Version\Version240 has been moved to \Elastica\QueryBuilder\Version\Version700 #1693
    • Dropped support for PHP 7.1 #1703

    Bugfixes

    • Renamed \Elastica\Suggest\Term deprecated option prefix_len to prefix_length #1707
    • The \Elastica\Query\GeoPolygon::count() method now returns the count of points passed to the filter #1696
    • Fix issue in \Elastica\Client::request() which causes request data to not be sent to the logger #1682

    Added

    • Added geo_bounding_box, geo_polygon, match_phrase, match_phrase_prefix, match_none to \Elastica\QueryBuilder\Version\Version700 #1702
    • Added \Elastica\ResultSet::getTotalHitsRelation() to get relation for total hits #1694
    • Added Sampler aggregation #1688

    Improvements

    • Launched tests with PHP 7.4 #1704
    • Launched local tests with PHP 7.2 by default #1725
    • Added nullable_type_declaration_for_default_null_value, no_alias_functions CS rules #1706
    • Configured visibility_required CS rule for constants #1723
    • Added Collapse DSL to QueryBuilder #1724
    Source code(tar.gz)
    Source code(zip)
  • 7.0.0-beta1(Oct 31, 2019)

    This is our first release in the 7.x cycle. It is compatible with Elasticsearch 7.x. Please review the breaking changes carefully. Most of them are related to the type removal in Elasticsearch.

    Backward Compatibility Breaks

    • The \Elastica\Query::$_suggest property has been renamed to $hasSuggest and is now private, it should not be used from extending classes #1679
    • \Elastica\Document expects a string as ID, not an int #1672.
    • Removed \Elastica\Query\GeohashCell query, use \Elastica\Query\GeoBoundingBox instead #1672.
    • Deprecated usage of \Elastica\Type class, \Elastica\Index class must be used instead #1666
    • Removed \Elastica\Type class, \Elastica\Index class must be used instead #1666
    • Forced index names to string in \Elastica\Index::__construct() #1666
    • Removed Type query \Elastica\Query\Type #1666
    • Removed Elastica\Type class, Elastica\Index class must be used instead #1666
    • Removed type handling from Elastica\Search class #1666
    • Removed type handling from Elastica\Bulk and Elastica\Bulk\Action classes #1666
    • Forced index names to string in Elastica\Index::__construct() #1666
    • Removed Type query Elastica\Query\Type #1666
    • Dropped support for PHP 7.0
    • \Elastica\AbstractUpdateAction::getOptions( $fields ) no longer supports the $underscore parameter, option names must match what elasticsearch expects.
    • Removed no longer supported \Elastica\Query\QueryString::setAutoGeneratePhraseQueries( $bool ) #1622
    • Replaced params._agg with state context variable in scripted metric aggregations
    • Camel Case and underscore parameters deprecated in 6.x have been removed
    • The parameter fields deprecated in 6.x has been removed from Bulk requestedit and Update request.
    • The _parent field has been removed in favour of the join field.
    • hits.total is now an object in the search response hits.total
    • Elastica\Reindex does not return an Index anymore but a Response.
    • Elastica\Reindex->run() does not refresh the new Index after completion anymore. Use $reindex->setParam(Reindex::REFRESH, 'wait_for') instead.
    • Elastica\Search->search() and Elastica\Search->count() use request method POST by default. Same for Elastica\Index, Elastica\Type\AbstractType, Elastica\Type.
    • Elastica\Client $_config field is now a ClientConfiguration instead of an array
    • Removed \Elastica\Client::_log, \Elastica\Log and the log configuration option. Use the Psr\Log\LoggerInterface $logger client argument to customize logging.
    • Changed all factory methods to make use of late static bindings by using static instead of self keyword. This is to increase extendability for classes with factory methods.

    Bugfixes

    • Always set the Guzzle base_uri to support connecting to multiple ES hosts. #1618
    • Properly handle underscore prefixes in options and bulk request metadata (cf upstream. #1621
    • Preserve zeros while doing float serialization to JSON. #1635
    • Add settings level on json to create an Index in all tests (it worked till 6.x but it shouldn't work)

    Added

    • support for elasticsearch-php ^7.0
    • Added ParentAggregation #1616
    • Elastica\Reindex missing options (script, remote, wait_for_completion, scroll...)
    • Added AdjacencyMatrix aggregation #1642
    • Added request method parameter to Elastica\SearchableInterface->search() and Elastica\SearchableInterface->count(). Same for Elastica\Search#1441
    • Added support for Field Collapsing (Issue: #1392; PR: #1653)
    • Support string DSN in \Elastica\Client constructor for config argument #1640
    • Move Client configuration in a dedicated class
    • Added callable type hinting to $callback in Client constructor. #1659
    • Added setTrackTotalHits method to Elastica\Query#1663
    • Allow metadata to be set on Aggregations (via AbstractAggregation::setMeta(array)). #1677

    Improvements

    • Added native_function_invocation CS rule #1606
    • Elasticsearch test version changed from 6.5.2 to 6.6.1 #1620
    • Clear scroll context also when empty page was received #1660
    Source code(tar.gz)
    Source code(zip)
  • 5.3.6(Aug 29, 2019)

  • 6.1.1(Jan 29, 2019)

    Added

    • Added BucketSelector aggregation #1554
    • Added DerivativeAggregation #1553
    • The preferred type name is _doc, so that index APIs have the same path as they will have in 7.0
    • Introduced new version of PHP-CS-Fixer and new Lint travis step. #1555

    Improvements

    • Reduced memory footprint of response by not keeping the raw JSON data when JSON after JSON has been parsed. #1588
    Source code(tar.gz)
    Source code(zip)
  • 5.3.5(Jan 28, 2019)

  • 5.3.4(Jan 16, 2019)

    Improvements

    • [Backported] Reduced memory footprint of response by not keeping the raw JSON data after JSON has been parsed. #1588
    • Fix PHPDoc block for ResultSet::current() #1591
    • Fix PHPDoc block for Index:analyze #1586
    Source code(tar.gz)
    Source code(zip)
  • 3.2.4(Mar 5, 2019)

    • In PHP 7.2 count() now raises a warning when an invalid parameter is passed. Only arrays and objects implementing the Countable interface should be passed. #1378 2018-12-19
    • Added codecov configuration
    Source code(tar.gz)
    Source code(zip)
  • 6.1.0(Dec 7, 2018)

    Backward Compatibility Breaks

    • Made result sets adhere to \Iterator interface definition that they implement. Specifically, you need to call valid() on the result set before calling current(). When using foreach this is done by PHP automatically. When valid returns false, the return value of current is undefined instead of false. #1506
      • \Elastica\ResultSet::next returns void instead of \Elastica\Result|false
      • \Elastica\Bulk\ResponseSet::current returns \Elastica\Bulk\Response instead of \Elastica\Bulk\Response|false
      • \Elastica\Multi\ResultSet::current returns \Elastica\ResultSet instead of \Elastica\ResultSet|false

    Added

    • Added a transport class for mocking a HTTP 403 error codes, useful for testing response failures in inheriting clients
    • Field param for Elastica\Query\FunctionScore::addRandomScoreFunction #1529
    • Index Recovery : the indices recovery API provides insight into on-going index shard recoveries. It was never been implemented into Elastica. #1537
    • add parent_id (reference #1518) in QueryBuilder. #1533
    • implemented string_distance option in Term Suggestion #1543

    Improvements

    • Using Elastica\Query\FunctionScore::addRandomScoreFunction without $field parameter is deprecated since ES 6.0 and will fail since ES 7.0 #1522

    • Aggreation\Percentiles updated to a newer version of the Algorithm (T-Digest 3.2) and Percentiles results changed a bit Have a look at here, so updated tests in order not to fail. #1531

    • Aggregation\Percentiles have been updated since Elasticsearch 2.3. In this version compression, HDR histogram changed their implementations. The missing field has never been implemented. #1532

      Before

        "compression" : 200,
        "method" : "hdr",
        "number_of_significant_value_digits" : 3
      

      Now

        "tdigest": {
          "compression" : 200
        },
        "hdr": {
          "number_of_significant_value_digits" : 3
        }
      
    • Never implemented the method Missing on Aggregation\Percentiles #1532

    Source code(tar.gz)
    Source code(zip)
  • 6.0.2(May 29, 2018)

    Added

    • Added support for pipeline when indexing document. #1455
    • Added support for multiple bucket sort orders for aggregations. #1480
    • Added basic support for the Elasticsearch Task Api
    • Added updateByQuery endpoint. #1499

    Improvements

    • Use source script field instead of deprecated (since ES 5.6) inline field. #1497
    • Updated Elasticsearch testing version to 6.2.4. #1501
    Source code(tar.gz)
    Source code(zip)
  • 5.3.2(May 29, 2018)

  • 6.0.1(Feb 18, 2018)

    Bugfixes

    Added

    • Added request parameters to Client->deleteDocuments(). #1419
    • Added request parameters to Type->updateDocuments(), Type->addDocuments(), Type->addObjects(), Index->addDocuments(), Index->updateDocuments(). #1427
    • Added avg_bucket() and sum_bucket() in aggregations PR#1443 - (https://github.com/ruflin/Elastica/issues/1279)
    • Added support for terms lookup mechanism on terms query #1452
    Source code(tar.gz)
    Source code(zip)
  • 5.3.1(Feb 18, 2018)

    Bugfixes

    • Removed deprecated min_word_len field in Elastica\Suggest\Term. Use min_word_length instead.

    Added

    • Added clear() to Scroll for closing search context on ES manually
    • In PHP 7.2 count() now raises a warning when an invalid parameter is passed. Only arrays and objects implementing the Countable interface should be passed. #1378

    Improvements

    • Clear search context on ES after usage in Scroll
    Source code(tar.gz)
    Source code(zip)
  • 6.0.0(Nov 14, 2017)

    This is the first GA release of the 6.x release cycle. For breaking change make sure to also check the 6.0.0-beta1 release.

    Backward Compatibility Breaks

    Added

    • Added clear() to Scroll for closing search context on ES manually
    • Added Elastica\Aggregation\StatsBucket

    Improvements

    • Clear search context on ES after usage in Scroll
    Source code(tar.gz)
    Source code(zip)
Owner
Nicolas Ruflin
Nicolas Ruflin
Official PHP low-level client for Elasticsearch.

elasticsearch-php Official low-level client for Elasticsearch. Its goal is to provide common ground for all Elasticsearch-related code in PHP; because

elastic 5k Dec 31, 2022
Official PHP low-level client for Elasticsearch.

elasticsearch-php Official low-level client for Elasticsearch. Its goal is to provide common ground for all Elasticsearch-related code in PHP; because

elastic 5k Jan 1, 2023
Build and execute an Elasticsearch search query using a fluent PHP API

PACKAGE IN DEVELOPMENT, DO NOT USE YET Build and execute ElasticSearch queries using a fluent PHP API This package is a lightweight query builder for

Spatie 94 Dec 14, 2022
Maps Laravel Eloquent models to Elasticsearch types

Elasticquent Elasticsearch for Eloquent Laravel Models Elasticquent makes working with Elasticsearch and Eloquent models easier by mapping them to Ela

Elasticquent 1.3k Jan 4, 2023
Store and retrieve objects from Algolia or Elasticsearch

Store and retrieve objects from a search index This is an opinionated Laravel 5.1 package to store and retrieve objects from a search index. Currently

Spatie 440 Dec 30, 2022
Elasticsearch driver for Laravel Scout

Elasticsearch driver for Laravel Scout. Contents Compatibility Installation Configuration Basic Usage Advanced Search Migrations Pitfalls Compatibilit

Ivan Babenko 197 Dec 19, 2022
Elasticsearch migrations for Laravel

Elastic Migrations Elasticsearch migrations for Laravel allow you to easily modify and share indices schema across the application's environments. Con

Ivan Babenko 151 Dec 20, 2022
Search among multiple models with ElasticSearch and Laravel Scout

For PHP8 support use php8 branch For Laravel Framework < 6.0.0 use 3.x branch The package provides the perfect starting point to integrate ElasticSear

Sergey Shlyakhov 592 Dec 25, 2022
This package offers advanced functionality for searching and filtering data in Elasticsearch.

Scout Elasticsearch Driver ?? Introducing a new Elasticsearch ecosystem for Laravel. ?? This package offers advanced functionality for searching and f

Ivan Babenko 1.2k Dec 20, 2022
Laravel 8.* Elasticsearch Eloquent

Elasticsearch Installation composer require etsetra/elasticsearch Create config file $ php artisan vendor:publish --tag="etsetra-elasticsearch-config

Etsetra 2 Jan 14, 2022
This modules provides a Search API Backend for Elasticsearch.

Search API ElasticSearch This modules provides a Search API Backend for Elasticsearch. This module uses the official Elasticsearch PHP Client. Feature

null 1 Jan 20, 2022
Search products, categories, brands or tags with ElasticSearch

ElasticSearch for Shopaholic This plugin allows you to use ElasticSearch as search engine for Shopaholic. Benefits Easy to install, easy to use Opened

Biz-Mark 4 Feb 18, 2022
Query Builder for Elasticsearch

Query Builder for Elasticsearch

wangzhiqiang 5 Mar 2, 2022
MeiliSearch PHP is the MeiliSearch API client for PHP developers.

MeiliSearch PHP is the MeiliSearch API client for PHP developers. ⚡ The MeiliSearch API client written for PHP ??

MeiliSearch 362 Jan 4, 2023
PHP Solr client library

Solarium PHP Solr Client Library What is Solarium? Solarium is a PHP Solr client library that accurately models Solr concepts. Where many other Solr l

Solarium PHP library organization 902 Dec 30, 2022
A fully featured full text search engine written in PHP

TNTSearch TNTSearch is a full-text search (FTS) engine written entirely in PHP. A simple configuration allows you to add an amazing search experience

TNT Studio 2.9k Jan 8, 2023
A php trait to search laravel models

Searchable, a search trait for Laravel Searchable is a trait for Laravel 4.2+ and Laravel 5.0 that adds a simple search function to Eloquent Models. S

Nicolás López Jullian 2k Dec 27, 2022
ScoutAPM PHP Agent for the Laravel Framework

Scout Laravel APM Agent Monitor the performance of PHP Laravel applications with Scout's PHP APM Agent. Detailed performance metrics and transaction t

Scout APM 22 Jan 2, 2023
This script was made to aid the process of migrating PHP and MySQL based websites

This script was made to aid the process of migrating PHP and MySQL based websites. Works with most common CMSes.

interconnect/it 3.9k Jan 5, 2023