Magento ElasticSearch Implementation

Overview

Magento 2.x support :

The repo for Magento 2 version of our module is available in the new repository of the module : https://github.com/Smile-SA/elasticsuite.

Enjoy !!!

About this module :

This module provides an integration of ElasticSearch into Magento developed by the R&D to address a lot of shortcomings met with the native SolR integration shipped with Magento EE :

  • Fulltext search improvement (fuzzy text query, …)
  • Rich autocomplete (products, categories, …)
  • Highly tunable scoring features
  • Relevancy using behavior of the customers (Not yet released OpenSource)
  • Integration of all Smile experience about search solutions (e.g. : Virtual Categories, multiple select facetting, …)

You can find more information in our slideshare slides :

enter image description here

Documentation :

FAQ

Why choosing ElasticSearch instead of extending the SolR implementation shipped with Magento EE ?

First, ElasticSearch contains a lot more useful features needed to achieve some features of the project :

  • Query language is more complete and allow us to build very complex use case models
  • Rescoring used for behavioral content
  • Ability to store many types of content into the same index (products, categories, ...)

Into the future we plan to use even more features specific to ElasticSearch (percolation, aggregation), since they are very valuable into an eCommerce context.

In the end ES has a lot of advantages over SolR :

  • A strong momentum with a community providing a lot of support and extensions to the core offer
  • Supported by a commercial company
  • Very well documented (http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/) !!!
  • Built for distributed environnement, making it easier to scale it up for our biggest clients
  • Built with replication features out of the box ensuring more stability for the websites using the engine

Who is supporting the module ? What about upgradability ?

Smile is supporting the module and ensure it is compatible with new Magento versions. The kind of feature we provide requires usually an external tool (FredHopper, ...) which requires a project by project upgrade which can take longer.

Our main idea is to create a community of clients sharing investment and evolutions about searchandizing features.

What is the project roadmap ?

  • More user behavior influence
  • Promotional rules influence on the search engine, Search engine based distance to promotion.
  • More website animation features to achieve a full searchandising suite
  • Showcases based on widgets
  • Banners selection
  • Stamping based on rules (new product, special price, ...)
  • Marketing facets
  • Recommandations

What Magento version is supported ?

The module has been successfully deployed and tested against the following Magento versions :

  • Magento EE 1.13
  • Magento EE 1.14
  • Magento CE 1.8
  • Magento CE 1.9

Can I install it on my existing project ?

If your project is using Magento EE >= 1.13 or Magento CE >= 1.8, the time you will need depends only on the amount of custom developments you spent on SolR onto the project. The custom developments can be separated in two parts :

  • Custom development replaced by new features of Magento ElasticSearch module (multiple facets, virtual categories, ...). You should disable this features into your old project and adapt the new version to you specific needs
  • Other features, you should be able to port with a very moderated effort (1 day / feature).

If your project does not rely on SolR to achieve developments, the migration project should not be more than a few days project.

For older version of Magento, an evaluation should be done for your specific project.

Bugs / RFC

Don't hesitate to :

  • Submit a bug, RFC, idea of new feature
  • Submit a merge request
Comments
  • on search error

    on search error

    Fatal error: Call to undefined method Mage_Catalog_Model_Resource_Product_Collection::isSpellchecked() in /home/esajee/public_html/esajee.com/app/code/community/Smile/ElasticSearch/Block/Catalogsearch/Result.php on line 31

    it was running fine before, not sure what we change in setting of attributes that this error came

    opened by SiddiqueAhmad 13
  • Problem on reindex magento

    Problem on reindex magento

    Hello,

    I am not able to make this work.

    curl -X GET 'http://localhost:9200/magentomattca/'

    {"magentomattca":{"aliases":{},"mappings":{"product":{"properties":{"attribute_set_id":{"type":"long"},"categories":{"type":"long"},"category_name_ro":{"type":"string"},"created_at":{"type":"string"},"entity_id":{"type":"long"},"entity_type_id":{"type":"long"},"has_discount_0_1":{"type":"boolean"},"has_discount_1_1":{"type":"boolean"},"has_discount_2_1":{"type":"boolean"},"has_discount_3_1":{"type":"boolean"},"has_options":{"type":"boolean"},"in_stock":{"type":"boolean"},"position":{"properties":{"category_id":{"type":"long"},"position":{"type":"long"}}},"price_0_1":{"type":"long"},"price_1_1":{"type":"long"},"price_2_1":{"type":"long"},"price_3_1":{"type":"long"},"required_options":{"type":"boolean"},"show_in_categories":{"type":"string"},"sku":{"type":"string"},"store_id":{"type":"long"},"type_id":{"type":"string"},"unique":{"type":"string"},"updated_at":{"type":"string"}}}},"settings":{"index":{"creation_date":"1457350472747","uuid":"NaFtk-9XQ0SiUAVAK8eDsQ","number_of_replicas":"1","number_of_shards":"5","version":{"created":"1070599"}}},"warmers":{}}}

    curl -X GET 'http://localhost:9200/magentomattca/_settings'

    {"magentomattca":{"settings":{"index":{"creation_date":"1457350472747","uuid":"NaFtk-9XQ0SiUAVAK8eDsQ","number_of_replicas":"1","number_of_shards":"5","version":{"created":"1070599"}}}}}

    but for

    php /home/mattca/public_html/shell/indexer.php -reindex catalogsearch_fulltext

    I get

    `Catalog Search Index index process unknown error: exception 'Guzzle\Http\Exception\ClientErrorResponseException' with message 'Client error response [status code] 400 [reason phrase] Bad Request [url] http://localhost:9200/magentomattca/_settings' in /home/mattca/public_html/lib/vendor/guzzle/http/Guzzle/Http/Exception/BadResponseException.php:43 Stack trace: #0 /home/mattca/public_html/lib/vendor/guzzle/http/Guzzle/Http/Message/Request.php(145): Guzzle\Http\Exception\BadResponseException::factory(Object(Guzzle\Http\Message\EntityEnclosingRequest), Object(Guzzle\Http\Message\Response)) #1 [internal function]: Guzzle\Http\Message\Request::onRequestError(Object(Guzzle\Common\Event), 'request.error', Object(Symfony\Component\EventDispatcher\EventDispatcher)) #2 /home/mattca/public_html/lib/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/EventDispatcher.php(164): call_user_func(Array, Object(Guzzle\Common\Event), 'request.error', Object(Symfony\Component\EventDispatcher\EventDispatcher)) #3 /home/mattca/public_html/lib/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/EventDispatcher.php(53): Symfony\Component\EventDispatcher\EventDispatcher->doDispatch(Array, 'request.error', Object(Guzzle\Common\Event)) #4 /home/mattca/public_html/lib/vendor/guzzle/http/Guzzle/Http/Message/Request.php(589): Symfony\Component\EventDispatcher\EventDispatcher->dispatch('request.error', Object(Guzzle\Common\Event)) #5 /home/mattca/public_html/lib/vendor/guzzle/http/Guzzle/Http/Message/Request.php(378): Guzzle\Http\Message\Request->processResponse(Array) #6 /home/mattca/public_html/lib/vendor/guzzle/http/Guzzle/Http/Message/EntityEnclosingRequest.php(49): Guzzle\Http\Message\Request->setState('complete', Array) #7 /home/mattca/public_html/lib/vendor/guzzle/http/Guzzle/Http/Curl/CurlMulti.php(303): Guzzle\Http\Message\EntityEnclosingRequest->setState('complete', Array) #8 /home/mattca/public_html/lib/vendor/guzzle/http/Guzzle/Http/Curl/CurlMulti.php(257): Guzzle\Http\Curl\CurlMulti->processResponse(Object(Guzzle\Http\Message\EntityEnclosingRequest), Object(Guzzle\Http\Curl\CurlHandle), Array) #9 /home/mattca/public_html/lib/vendor/guzzle/http/Guzzle/Http/Curl/CurlMulti.php(240): Guzzle\Http\Curl\CurlMulti->processMessages() #10 /home/mattca/public_html/lib/vendor/guzzle/http/Guzzle/Http/Curl/CurlMulti.php(224): Guzzle\Http\Curl\CurlMulti->executeHandles() #11 /home/mattca/public_html/lib/vendor/guzzle/http/Guzzle/Http/Curl/CurlMulti.php(111): Guzzle\Http\Curl\CurlMulti->perform() #12 /home/mattca/public_html/lib/vendor/guzzle/http/Guzzle/Http/Curl/CurlMultiProxy.php(94): Guzzle\Http\Curl\CurlMulti->send() #13 /home/mattca/public_html/lib/vendor/guzzle/http/Guzzle/Http/Client.php(284): Guzzle\Http\Curl\CurlMultiProxy->send() #14 /home/mattca/public_html/lib/vendor/guzzle/http/Guzzle/Http/Message/Request.php(198): Guzzle\Http\Client->send(Object(Guzzle\Http\Message\EntityEnclosingRequest)) #15 /home/mattca/public_html/lib/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Connections/GuzzleConnection.php(189): Guzzle\Http\Message\Request->send() #16 /home/mattca/public_html/lib/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Connections/GuzzleConnection.php(104): Elasticsearch\Connections\GuzzleConnection->sendRequest(Object(Guzzle\Http\Message\EntityEnclosingRequest), '{"settings":{"n...') #17 /home/mattca/public_html/lib/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Transport.php(166): Elasticsearch\Connections\GuzzleConnection->performRequest('PUT', '/magentomattca/...', Array, '{"settings":{"n...') #18 /home/mattca/public_html/lib/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Endpoints/AbstractEndpoint.php(86): Elasticsearch\Transport->performRequest('PUT', '/magentomattca/...', Array, Array) #19 /home/mattca/public_html/lib/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Namespaces/IndicesNamespace.php(246): Elasticsearch\Endpoints\AbstractEndpoint->performRequest() #20 /home/mattca/public_html/app/code/community/Smile/ElasticSearch/Model/Resource/Engine/Elasticsearch/Index.php(349): Elasticsearch\Namespaces\IndicesNamespace->putSettings(Array) #21 /home/mattca/public_html/app/code/community/Smile/ElasticSearch/Model/Resource/Engine/Elasticsearch/Index.php(449): Smile_ElasticSearch_Model_Resource_Engine_Elasticsearch_Index->_prepareIndex() #22 /home/mattca/public_html/app/code/community/Smile/ElasticSearch/Model/Indexer/Fulltext.php(193): Smile_ElasticSearch_Model_Resource_Engine_Elasticsearch_Index->prepareNewIndex() #23 /home/mattca/public_html/app/code/core/Mage/Index/Model/Process.php(212): Smile_ElasticSearch_Model_Indexer_Fulltext->reindexAll() #24 /home/mattca/public_html/app/code/core/Mage/Index/Model/Process.php(260): Mage_Index_Model_Process->reindexAll() #25 /home/mattca/public_html/shell/indexer.php(168): Mage_Index_Model_Process->reindexEverything() #26 /home/mattca/public_html/shell/indexer.php(216): Mage_Shell_Compiler->run() #27 {main}

    Next exception 'Elasticsearch\Common\Exceptions\BadRequest400Exception' with message '{"error":"ElasticsearchIllegalArgumentException[Can't update [index.number_of_replicas] on closed indices [[magentomattca]] - can leave index in an unopenable state]","status":400}' in /home/mattca/public_html/lib/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Connections/GuzzleConnection.php:266 Stack trace: #0 /home/mattca/public_html/lib/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Connections/GuzzleConnection.php(194): Elasticsearch\Connections\GuzzleConnection->process4xxError(Object(Guzzle\Http\Message\EntityEnclosingRequest), Object(Guzzle\Http\Exception\ClientErrorResponseException), '{"settings":{"n...') #1 /home/mattca/public_html/lib/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Connections/GuzzleConnection.php(104): Elasticsearch\Connections\GuzzleConnection->sendRequest(Object(Guzzle\Http\Message\EntityEnclosingRequest), '{"settings":{"n...') #2 /home/mattca/public_html/lib/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Transport.php(166): Elasticsearch\Connections\GuzzleConnection->performRequest('PUT', '/magentomattca/...', Array, '{"settings":{"n...') #3 /home/mattca/public_html/lib/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Endpoints/AbstractEndpoint.php(86): Elasticsearch\Transport->performRequest('PUT', '/magentomattca/...', Array, Array) #4 /home/mattca/public_html/lib/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Namespaces/IndicesNamespace.php(246): Elasticsearch\Endpoints\AbstractEndpoint->performRequest() #5 /home/mattca/public_html/app/code/community/Smile/ElasticSearch/Model/Resource/Engine/Elasticsearch/Index.php(349): Elasticsearch\Namespaces\IndicesNamespace->putSettings(Array) #6 /home/mattca/public_html/app/code/community/Smile/ElasticSearch/Model/Resource/Engine/Elasticsearch/Index.php(449): Smile_ElasticSearch_Model_Resource_Engine_Elasticsearch_Index->_prepareIndex() #7 /home/mattca/public_html/app/code/community/Smile/ElasticSearch/Model/Indexer/Fulltext.php(193): Smile_ElasticSearch_Model_Resource_Engine_Elasticsearch_Index->prepareNewIndex() #8 /home/mattca/public_html/app/code/core/Mage/Index/Model/Process.php(212): Smile_ElasticSearch_Model_Indexer_Fulltext->reindexAll() #9 /home/mattca/public_html/app/code/core/Mage/Index/Model/Process.php(260): Mage_Index_Model_Process->reindexAll() #10 /home/mattca/public_html/shell/indexer.php(168): Mage_Index_Model_Process->reindexEverything() #11 /home/mattca/public_html/shell/indexer.php(216): Mage_Shell_Compiler->run() #12 {main}

    `

    opened by andy1786 11
  • Can't Use Smile on AWS Elastic Search Service

    Can't Use Smile on AWS Elastic Search Service

    Elastic Service of Amazon would always be the preferable option for someone who have their website on AWS. As AWS Elastic Service doesn't allow to modify service configuration, plugins like "analysis-phonetic" and "analysis-icu" can't be installed there. This is a major limitation of smile-magento-elasticsearch that compel to go for alternate options. It will be better to have a workaround to make it available to existing Elastic Service of Amazon.

    opened by deepusnath 9
  • PHP Fatal error: Call to undefined method Mage_CatalogSearch_Model_Resource_Fulltext_Engine::getCurrentIndex()

    PHP Fatal error: Call to undefined method Mage_CatalogSearch_Model_Resource_Fulltext_Engine::getCurrentIndex()

    Magento 1.9.2.1 Elastic Search 1.7 Smile Elastic Search 1.3.0

    Every time i go to reindex in magento, i receive an Error 500 and in the log i read:

    [25-Feb-2016 19:19:46 UTC] PHP Fatal error: Call to undefined method Mage_CatalogSearch_Model_Resource_Fulltext_Engine::getCurrentIndex() in /home/smpnail/public_html/magento/app/code/community/Smile/ElasticSearch/Model/Indexer/Fulltext.php on line 181

    [25-Feb-2016 19:21:20 UTC] PHP Fatal error: Call to undefined method Mage_CatalogSearch_Model_Resource_Fulltext_Engine::getCurrentIndex() in /home/smpnail/public_html/magento/app/code/community/Smile/ElasticSearch/Model/Indexer/Search/Terms/Position.php on line 121

    [25-Feb-2016 19:21:24 UTC] PHP Fatal error: Call to undefined method Mage_CatalogSearch_Model_Resource_Fulltext_Engine::getCurrentIndex() in /home/smpnail/public_html/magento/app/code/community/Smile/VirtualCategories/Model/Indexer/VirtualCategories/Product/Position.php on line 130

    opened by simbus82 9
  • Debian + Magento 1.9.2.4 + Apache + ElasticSearch 2.4

    Debian + Magento 1.9.2.4 + Apache + ElasticSearch 2.4

    I install smile's elasticSearch extention to Magento 1.9 but does not show detail for your configuration and does not show the option to search engine. No exception or error is generated. What I can do?

    opened by danielr1979 8
  • Error creating elastic search index after installing module

    Error creating elastic search index after installing module

    Hello, I installed this module on Magento 1.9.2.1 using Elasticsearch version 1.7.1 but I immediately get the following exception when performing a reindexall.

    Catalog Search Index index process unknown error:
    exception 'Guzzle\Http\Exception\ClientErrorResponseException' with message 'Client error response
    [status code] 400
    [reason phrase] Bad Request
    [url] http://127.0.0.1:9200/sac-20150918-220533' in /var/www/lib/vendor/guzzle/http/Guzzle/Http/Exception/BadResponseException.php:43
    Stack trace:
    #0 /var/www/lib/vendor/guzzle/http/Guzzle/Http/Message/Request.php(145): Guzzle\Http\Exception\BadResponseException::factory(Object(Guzzle\Http\Message\EntityEnclosingRequest), Object(Guzzle\Http\Message\Response))
    #1 [internal function]: Guzzle\Http\Message\Request::onRequestError(Object(Guzzle\Common\Event), 'request.error', Object(Symfony\Component\EventDispatcher\EventDispatcher))
    #2 /var/www/lib/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/EventDispatcher.php(164): call_user_func(Array, Object(Guzzle\Common\Event), 'request.error', Object(Symfony\Component\EventDispatcher\EventDispatcher))
    #3 /var/www/lib/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/EventDispatcher.php(53): Symfony\Component\EventDispatcher\EventDispatcher->doDispatch(Array, 'request.error', Object(Guzzle\Common\Event))
    #4 /var/www/lib/vendor/guzzle/http/Guzzle/Http/Message/Request.php(589): Symfony\Component\EventDispatcher\EventDispatcher->dispatch('request.error', Object(Guzzle\Common\Event))
    #5 /var/www/lib/vendor/guzzle/http/Guzzle/Http/Message/Request.php(378): Guzzle\Http\Message\Request->processResponse(Array)
    #6 /var/www/lib/vendor/guzzle/http/Guzzle/Http/Message/EntityEnclosingRequest.php(49): Guzzle\Http\Message\Request->setState('complete', Array)
    #7 /var/www/lib/vendor/guzzle/http/Guzzle/Http/Curl/CurlMulti.php(303): Guzzle\Http\Message\EntityEnclosingRequest->setState('complete', Array)
    #8 /var/www/lib/vendor/guzzle/http/Guzzle/Http/Curl/CurlMulti.php(257): Guzzle\Http\Curl\CurlMulti->processResponse(Object(Guzzle\Http\Message\EntityEnclosingRequest), Object(Guzzle\Http\Curl\CurlHandle), Array)
    #9 /var/www/lib/vendor/guzzle/http/Guzzle/Http/Curl/CurlMulti.php(240): Guzzle\Http\Curl\CurlMulti->processMessages()
    #10 /var/www/lib/vendor/guzzle/http/Guzzle/Http/Curl/CurlMulti.php(224): Guzzle\Http\Curl\CurlMulti->executeHandles()
    #11 /var/www/lib/vendor/guzzle/http/Guzzle/Http/Curl/CurlMulti.php(111): Guzzle\Http\Curl\CurlMulti->perform()
    #12 /var/www/lib/vendor/guzzle/http/Guzzle/Http/Curl/CurlMultiProxy.php(94): Guzzle\Http\Curl\CurlMulti->send()
    #13 /var/www/lib/vendor/guzzle/http/Guzzle/Http/Client.php(284): Guzzle\Http\Curl\CurlMultiProxy->send()
    #14 /var/www/lib/vendor/guzzle/http/Guzzle/Http/Message/Request.php(198): Guzzle\Http\Client->send(Object(Guzzle\Http\Message\EntityEnclosingRequest))
    #15 /var/www/lib/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Connections/GuzzleConnection.php(189): Guzzle\Http\Message\Request->send()
    #16 /var/www/lib/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Connections/GuzzleConnection.php(104): Elasticsearch\Connections\GuzzleConnection->sendRequest(Object(Guzzle\Http\Message\EntityEnclosingRequest), '{"settings":{"n...')
    #17 /var/www/lib/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Transport.php(166): Elasticsearch\Connections\GuzzleConnection->performRequest('POST', '/sac-20150918-2...', Array, '{"settings":{"n...')
    #18 /var/www/lib/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Endpoints/AbstractEndpoint.php(86): Elasticsearch\Transport->performRequest('POST', '/sac-20150918-2...', Array, Array)
    #19 /var/www/lib/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Namespaces/IndicesNamespace.php(839): Elasticsearch\Endpoints\AbstractEndpoint->performRequest()
    #20 /var/www/app/code/community/Smile/ElasticSearch/Model/Resource/Engine/Elasticsearch/Index.php(369): Elasticsearch\Namespaces\IndicesNamespace->create(Array)
    #21 /var/www/app/code/community/Smile/ElasticSearch/Model/Resource/Engine/Elasticsearch/Index.php(450): Smile_ElasticSearch_Model_Resource_Engine_Elasticsearch_Index->_prepareIndex()
    #22 /var/www/app/code/community/Smile/ElasticSearch/Model/Indexer/Fulltext.php(193): Smile_ElasticSearch_Model_Resource_Engine_Elasticsearch_Index->prepareNewIndex()
    #23 /var/www/app/code/core/Mage/Index/Model/Process.php(212): Smile_ElasticSearch_Model_Indexer_Fulltext->reindexAll()
    #24 /var/www/app/code/core/Mage/Index/Model/Process.php(260): Mage_Index_Model_Process->reindexAll()
    #25 /var/www/shell/indexer.php(168): Mage_Index_Model_Process->reindexEverything()
    #26 /var/www/shell/indexer.php(216): Mage_Shell_Compiler->run()
    #27 {main}
    
    Next exception 'Elasticsearch\Common\Exceptions\BadRequest400Exception' with message '{"error":"IndexCreationException[[sac-20150918-220533] failed to create index]; nested: ElasticsearchIllegalArgumentException[failed to find token filter type [phonetic] for [beidermorse_en]]; nested: NoClassSettingsException[Failed to load class setting [type] with value [phonetic]]; nested: ClassNotFoundException[org.elasticsearch.index.analysis.phonetic.PhoneticTokenFilterFactory]; ","status":400}' in /var/www/lib/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Connections/GuzzleConnection.php:266
    Stack trace:
    #0 /var/www/lib/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Connections/GuzzleConnection.php(194): Elasticsearch\Connections\GuzzleConnection->process4xxError(Object(Guzzle\Http\Message\EntityEnclosingRequest), Object(Guzzle\Http\Exception\ClientErrorResponseException), '{"settings":{"n...')
    #1 /var/www/lib/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Connections/GuzzleConnection.php(104): Elasticsearch\Connections\GuzzleConnection->sendRequest(Object(Guzzle\Http\Message\EntityEnclosingRequest), '{"settings":{"n...')
    #2 /var/www/lib/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Transport.php(166): Elasticsearch\Connections\GuzzleConnection->performRequest('POST', '/sac-20150918-2...', Array, '{"settings":{"n...')
    #3 /var/www/lib/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Endpoints/AbstractEndpoint.php(86): Elasticsearch\Transport->performRequest('POST', '/sac-20150918-2...', Array, Array)
    #4 /var/www/lib/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Namespaces/IndicesNamespace.php(839): Elasticsearch\Endpoints\AbstractEndpoint->performRequest()
    #5 /var/www/app/code/community/Smile/ElasticSearch/Model/Resource/Engine/Elasticsearch/Index.php(369): Elasticsearch\Namespaces\IndicesNamespace->create(Array)
    #6 /var/www/app/code/community/Smile/ElasticSearch/Model/Resource/Engine/Elasticsearch/Index.php(450): Smile_ElasticSearch_Model_Resource_Engine_Elasticsearch_Index->_prepareIndex()
    #7 /var/www/app/code/community/Smile/ElasticSearch/Model/Indexer/Fulltext.php(193): Smile_ElasticSearch_Model_Resource_Engine_Elasticsearch_Index->prepareNewIndex()
    #8 /var/www/app/code/core/Mage/Index/Model/Process.php(212): Smile_ElasticSearch_Model_Indexer_Fulltext->reindexAll()
    #9 /var/www/app/code/core/Mage/Index/Model/Process.php(260): Mage_Index_Model_Process->reindexAll()
    #10 /var/www/shell/indexer.php(168): Mage_Index_Model_Process->reindexEverything()
    #11 /var/www/shell/indexer.php(216): Mage_Shell_Compiler->run()
    #12 {main}
    
    opened by ali-husain 8
  • Failed to parse query with a slash - suggest action

    Failed to parse query with a slash - suggest action

    When you have a / in the suggest query, it fails with the following exception:

    "error":"SearchPhaseExecutionException[Failed to execute phase [query_fetch], all shards failed; shardFailures {[index][0]: SearchParseException[[index][0]: from[-1],size[-1]: Parse Failure [Failed to parse source [{\"query\":{\"filtered\":{\"query\":{\"bool\":{\"must\":[{\"function_score\":{\"query\":{\"bool\":{\"must\":[{\"multi_match\":{\"query\":\"pants\\/\",\"type\":\"best_fields\",\"minimum_should_match\":\"100%\",\"fields\":[\"autocomplete_nl.edge_ngram_front\"],\"fuzziness\":\"0.5\",\"prefix_length\":\"1\",\"max_expansions\":\"20\",\"analyzer\":\"whitespace\"}}],\"should\":[{\"multi_match\":{\"query\":\"pants\\/\",\"type\":\"best_fields\",\"tie_breaker\":1,\"fields\":[\"autocomplete_nl.edge_ngram_front\"],\"analyzer\":\"analyzer_nl\"}}]}},\"functions\":[{\"filter\":{\"query\":{\"query_string\":{\"query\":\"pants\\/\",\"default_field\":\"autocomplete_nl.whitespace\"}}},\"boost_factor\":10}]}}]}},\"filter\":{\"bool\":{\"must\":[{\"terms\":{\"visibility\":[3,4]}},{\"terms\":{\"status\":[1]}},{\"terms\":{\"in_stock\":[1]}},{\"terms\":{\"store_id\":[1]}}],\"_cache\":true}}}},\"fields\":[\"entity_id\"],\"track_scores\":true,\"sort\":[{\"_score\":\"desc\"}],\"from\":0,\"size\":\"3\"}]]]; nested: QueryParsingException[[index] Failed to parse query [pants/]]; nested: ParseException[Cannot parse 'pants/': Lexical error at line 1, column 7.  Encountered: <EOF> after : \"\"]; nested: TokenMgrError[Lexical error at line 1, column 7.  Encountered: <EOF> after : \"\"]; }]","status":400}
    

    The error lead me to this issue in the elasticsearch repo: https://github.com/elastic/elasticsearch/issues/2980

    Escaping the query seems the most logical solution to this, however I don't know this module that well. I tested with escaping the query when it's set in Smile_ElasticSearch_Model_Resource_Engine_Elasticsearch_Query_Abstract::setFulltextQuery($query) which worked well for me.

    For some reason this exception doesn't occur when I search on the same query.

    If you agree with this, I can make a PR.

    bug 
    opened by mbijnsdorp 7
  • Unable to use decimal aatribute

    Unable to use decimal aatribute

    We have some attributes which haves decimal values. I have installed this module and it works fine for all values except decimal.

    It gives me the following error.

    Call to undefined method Smile_ElasticSearch_Helper_Data::getAttributeFieldName() in app/code/community/Smile/ElasticSearch/Model/Catalog/Layer/Filter/Decimal.php on line 136.

    Is it possible to have decimal attribute values with this module?

    bug 
    opened by roshnibharambe 7
  • Problems indexing

    Problems indexing

    Hello, After a succesful installation of the module, I tried re-indexing Catalog Search Index. The output is this:

    {"error":"MapperParsingException[mapping [product]]; nested: MapperParsingException[Analyzer [analyzer_zh] not found for field [options_shoe_type_zh]]; ","status":400}
    Cannot initialize the indexer process.
    

    Also, the exception.log looks like this:

    2015-02-19T23:13:29+00:00 ERR (3): 
    exception 'Guzzle\Http\Exception\ClientErrorResponseException' with message 'Client error response
    [status code] 400
    [reason phrase] Bad Request
    [url] http://lofty-dev.lofty.com:9200/dev-20150219-231329' in /vagrant/LoftySite/magento/lib/vendor/guzzle/http/Guzzle/Http/Exception/BadResponseException.php:43
    Stack trace:
    #0 /vagrant/LoftySite/magento/lib/vendor/guzzle/http/Guzzle/Http/Message/Request.php(145): Guzzle\Http\Exception\BadResponseException::factory(Object(Guzzle\Http\Message\EntityEnclosingRequest), Object(Guzzle\Http\Message\Response))
    #1 [internal function]: Guzzle\Http\Message\Request::onRequestError(Object(Guzzle\Common\Event), 'request.error', Object(Symfony\Component\EventDispatcher\EventDispatcher))
    #2 /vagrant/LoftySite/magento/lib/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/EventDispatcher.php(164): call_user_func(Array, Object(Guzzle\Common\Event), 'request.error', Object(Symfony\Component\EventDispatcher\EventDispatcher))
    #3 /vagrant/LoftySite/magento/lib/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/EventDispatcher.php(53): Symfony\Component\EventDispatcher\EventDispatcher->doDispatch(Array, 'request.error', Object(Guzzle\Common\Event))
    #4 /vagrant/LoftySite/magento/lib/vendor/guzzle/http/Guzzle/Http/Message/Request.php(589): Symfony\Component\EventDispatcher\EventDispatcher->dispatch('request.error', Object(Guzzle\Common\Event))
    #5 /vagrant/LoftySite/magento/lib/vendor/guzzle/http/Guzzle/Http/Message/Request.php(378): Guzzle\Http\Message\Request->processResponse(Array)
    #6 /vagrant/LoftySite/magento/lib/vendor/guzzle/http/Guzzle/Http/Message/EntityEnclosingRequest.php(49): Guzzle\Http\Message\Request->setState('complete', Array)
    #7 /vagrant/LoftySite/magento/lib/vendor/guzzle/http/Guzzle/Http/Curl/CurlMulti.php(303): Guzzle\Http\Message\EntityEnclosingRequest->setState('complete', Array)
    #8 /vagrant/LoftySite/magento/lib/vendor/guzzle/http/Guzzle/Http/Curl/CurlMulti.php(257): Guzzle\Http\Curl\CurlMulti->processResponse(Object(Guzzle\Http\Message\EntityEnclosingRequest), Object(Guzzle\Http\Curl\CurlHandle), Array)
    #9 /vagrant/LoftySite/magento/lib/vendor/guzzle/http/Guzzle/Http/Curl/CurlMulti.php(240): Guzzle\Http\Curl\CurlMulti->processMessages()
    #10 /vagrant/LoftySite/magento/lib/vendor/guzzle/http/Guzzle/Http/Curl/CurlMulti.php(224): Guzzle\Http\Curl\CurlMulti->executeHandles()
    #11 /vagrant/LoftySite/magento/lib/vendor/guzzle/http/Guzzle/Http/Curl/CurlMulti.php(111): Guzzle\Http\Curl\CurlMulti->perform()
    #12 /vagrant/LoftySite/magento/lib/vendor/guzzle/http/Guzzle/Http/Curl/CurlMultiProxy.php(94): Guzzle\Http\Curl\CurlMulti->send()
    #13 /vagrant/LoftySite/magento/lib/vendor/guzzle/http/Guzzle/Http/Client.php(284): Guzzle\Http\Curl\CurlMultiProxy->send()
    #14 /vagrant/LoftySite/magento/lib/vendor/guzzle/http/Guzzle/Http/Message/Request.php(198): Guzzle\Http\Client->send(Object(Guzzle\Http\Message\EntityEnclosingRequest))
    #15 /vagrant/LoftySite/magento/lib/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Connections/GuzzleConnection.php(189): Guzzle\Http\Message\Request->send()
    #16 /vagrant/LoftySite/magento/lib/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Connections/GuzzleConnection.php(104): Elasticsearch\Connections\GuzzleConnection->sendRequest(Object(Guzzle\Http\Message\EntityEnclosingRequest), '{"settings":{"n...')
    #17 /vagrant/LoftySite/magento/lib/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Transport.php(166): Elasticsearch\Connections\GuzzleConnection->performRequest('POST', '/dev-20150219-2...', Array, '{"settings":{"n...')
    #18 /vagrant/LoftySite/magento/lib/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Endpoints/AbstractEndpoint.php(86): Elasticsearch\Transport->performRequest('POST', '/dev-20150219-2...', Array, Array)
    #19 /vagrant/LoftySite/magento/lib/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Namespaces/IndicesNamespace.php(839): Elasticsearch\Endpoints\AbstractEndpoint->performRequest()
    #20 /vagrant/LoftySite/magento/app/code/community/Smile/ElasticSearch/Model/Resource/Engine/Elasticsearch/Index.php(236): Elasticsearch\Namespaces\IndicesNamespace->create(Array)
    #21 /vagrant/LoftySite/magento/app/code/community/Smile/ElasticSearch/Model/Resource/Engine/Elasticsearch/Index.php(306): Smile_ElasticSearch_Model_Resource_Engine_Elasticsearch_Index->_prepareIndex()
    #22 /vagrant/LoftySite/magento/app/code/community/Smile/ElasticSearch/Model/Indexer/Fulltext.php(193): Smile_ElasticSearch_Model_Resource_Engine_Elasticsearch_Index->prepareNewIndex()
    #23 /vagrant/LoftySite/magento/app/code/core/Mage/Index/Model/Process.php(210): Smile_ElasticSearch_Model_Indexer_Fulltext->reindexAll()
    #24 /vagrant/LoftySite/magento/app/code/core/Mage/Index/Model/Process.php(258): Mage_Index_Model_Process->reindexAll()
    #25 /vagrant/LoftySite/magento/app/code/core/Mage/Index/controllers/Adminhtml/ProcessController.php(182): Mage_Index_Model_Process->reindexEverything()
    #26 /vagrant/LoftySite/magento/app/code/core/Mage/Core/Controller/Varien/Action.php(418): Mage_Index_Adminhtml_ProcessController->massReindexAction()
    #27 /vagrant/LoftySite/magento/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(250): Mage_Core_Controller_Varien_Action->dispatch('massReindex')
    #28 /vagrant/LoftySite/magento/app/code/core/Mage/Core/Controller/Varien/Front.php(172): Mage_Core_Controller_Varien_Router_Standard->match(Object(Magnify_Mobile_Http))
    #29 /vagrant/LoftySite/magento/app/code/core/Mage/Core/Model/App.php(354): Mage_Core_Controller_Varien_Front->dispatch()
    #30 /vagrant/LoftySite/magento/app/Mage.php(684): Mage_Core_Model_App->run(Array)
    #31 /vagrant/LoftySite/magento/index.php(85): Mage::run('', 'store')
    #32 {main}
    

    Thank you.

    bug 
    opened by tacheshun 7
  • Failed to find mapping for name_fr.untouched

    Failed to find mapping for name_fr.untouched

    Hello everyone I have a problem : When I use the autocompletion of focntion magento, nothing is displayed. When I checked the ElasticSearch' log, I found the following error: `-------------------------------------------------------------------------------------

    [2016-10-06 10:30:15,577][DEBUG][action.search.type ] [Chaka] All shards failed for phase: [query_fetch] org.elasticsearch.search.SearchParseException: [fly-20161006-082831][0]: query[filtered(+function score (+autocomplete_fr.edge_ngram_front:test, functions: [{filter(QueryWrapperFi lter(autocomplete_fr.whitespace:test)), function [boost[10.0]]}]))->cache(BooleanFilter(+cache(visibility:[1 TO 1])))],from[-1],size[-1]: Parse Failure [Failed to parse source [{"query":{"filtered":{"query":{"bool":{"must":[{"function_score":{"query":{"bool":{"must":[{"multi_match":{" query":"test","type":"best_fields","tie_breaker":1,"fields":["autocomplete_fr.edge_ngram_front"],"analyzer":"analyzer_fr","minimum_should_match":"100%"}}]}},"functions":[{"filter" :{"query":{"query_string":{"query":"test","default_field":"autocomplete_fr.whitespace"}}},"boost_factor":10}]}}]}},"filter":{"bool":{"must":[{"terms":{"visibility":[3,4]}},{"terms ":{"status":[1]}},{"terms":{"in_stock":[1]}},{"terms":{"store_id":[1]}}],"_cache":true}}}},"facets":{"name":{"terms_stats":{"size":"3","order":"total","key_field":"name_fr.untouch ed","value_script":"_score"}}},"fields":["entity_id"],"track_scores":true,"sort":[{"_score":"desc"}],"from":0,"size":"3"}]] at org.elasticsearch.search.SearchService.parseSource(SearchService.java:721) at org.elasticsearch.search.SearchService.createContext(SearchService.java:557) at org.elasticsearch.search.SearchService.createAndPutContext(SearchService.java:529) at org.elasticsearch.search.SearchService.executeFetchPhase(SearchService.java:370) at org.elasticsearch.search.action.SearchServiceTransportAction$11.call(SearchServiceTransportAction.java:333) at org.elasticsearch.search.action.SearchServiceTransportAction$11.call(SearchServiceTransportAction.java:330) at org.elasticsearch.search.action.SearchServiceTransportAction$23.run(SearchServiceTransportAction.java:559) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745) Caused by: org.elasticsearch.search.facet.FacetPhaseExecutionException: Facet [name]: failed to find mapping for name_fr.untouched at org.elasticsearch.search.facet.termsstats.TermsStatsFacetParser.parse(TermsStatsFacetParser.java:126) at org.elasticsearch.search.facet.FacetParseElement.parse(FacetParseElement.java:93) at org.elasticsearch.search.SearchService.parseSource(SearchService.java:705) -------------------------------------------------------------------------------------

    Did you encounter such an error?

    Thank you for your help

    bug 
    opened by aitsakel 6
  • QUESTION: Is it possible with the ElasticSearch module to do partial reindexing ?

    QUESTION: Is it possible with the ElasticSearch module to do partial reindexing ?

    Hi,

    We have Magento 1.14 EE and it looks like that each time it needs a full reindex of the Elastic Search index. Is there any way to do a partial reindexing ?

    help wanted question 
    opened by sylvainraye 6
  • Installation problem

    Installation problem

    I am trying to install for the first time elasticsuite on Magento 2.3.4

    I run the command composer require smile/elasticsuite ~2.8.0 and i am getting the following message:

    ./composer.json has been updated Loading composer repositories with package information Updating dependencies (including require-dev) Your requirements could not be resolved to an installable set of packages.

    Problem 1

    • smile/elasticsuite 2.8.5 requires magento/framework >=102.0.0 -> no matching package found.
    • smile/elasticsuite 2.8.4 requires magento/framework >=102.0.0 -> no matching package found.
    • smile/elasticsuite 2.8.3 requires magento/framework >=102.0.0 -> no matching package found.
    • smile/elasticsuite 2.8.2 requires magento/framework >=102.0.0 -> no matching package found.
    • smile/elasticsuite 2.8.1 requires magento/framework >=102.0.0 -> no matching package found.
    • smile/elasticsuite 2.8.0 requires magento/framework >=102.0.0 -> no matching package found.
    • Installation request for smile/elasticsuite ~2.8.0 -> satisfiable by smile/elasticsuite[2.8.0, 2.8.1, 2.8.2, 2.8.3, 2.8.4, 2.8.5].

    Potential causes:

    A typo in the package name The package is not available in a stable-enough version according to your minimum-stability setting see https://getcomposer.org/doc/04-schema.md#minimum-stability for more details. It's a private package and you forgot to add a custom repository to find it Read https://getcomposer.org/doc/articles/troubleshooting.md for further common problems.

    Installation failed, reverting ./composer.json to its original content.

    Do you have any idea why is happening that?

    Is it possible to install elasticsuite without using composer ?

    opened by georgetze 0
  • PHP Fatal error:  Call to a member function getVirtualProductIds() on null in /var/www/mobiclick/public_html/app/code/community/Smile/VirtualCategories/Model/Indexer/VirtualCategories/Product/Position.php on line 71

    PHP Fatal error: Call to a member function getVirtualProductIds() on null in /var/www/mobiclick/public_html/app/code/community/Smile/VirtualCategories/Model/Indexer/VirtualCategories/Product/Position.php on line 71

    As per title, I'm getting this error during a reindexall:

    PHP Fatal error: Call to a member function getVirtualProductIds() on null in /var/www/mobiclick/public_html/app/code/community/Smile/VirtualCategories/Model/Indexer/VirtualCategories/Product/Position.php on line 71

    This is my full output:

    Product Attributes index was rebuilt successfully in 00:06:26
    Product Prices index was rebuilt successfully in 00:13:05
    Catalog URL Rewrites index was rebuilt successfully in 00:09:05
    Category Products index was rebuilt successfully in 00:00:21
    Catalog Search Index index was rebuilt successfully in 00:59:53
    Stock Status index was rebuilt successfully in 00:00:00
    Tag Aggregation Data index was rebuilt successfully in 00:00:13
    Default Values (MANAdev) index was rebuilt successfully in 00:00:14
    SEO Schemas (MANAdev) index was rebuilt successfully in 00:00:00
    SEO URL Rewrites (MANAdev) index was rebuilt successfully in 00:00:08
    Search Terms products positions Indexer index was rebuilt successfully in 00:00:29
    PHP Fatal error:  Call to a member function getVirtualProductIds() on null in /var/www/mobiclick/public_html/app/code/community/Smile/VirtualCategories/Model/Indexer/VirtualCategories/Product/Position.php on line 71
    

    Due to this error, the index called "Custom products positions in Virtual Categories" remains in "processing" status and it never completes.

    I'm with "smile/elasticsearch": "1.4.1" on a Magento ver. 1.9.2.1 website

    We recently installed the latest security patch + PHP 7.2 compatibility patch (but the reindexing is still running with php-cli 5.6).

    opened by ZaneCEO 0
  • Index Problem

    Index Problem

    I've a docker-setup: Magento 1.9 Elasticsearch-Container: 6.4.2 Elastico: 1.7

    by any search getting this Error:

    {"error":{"root_cause":[{"type":"index_not_found_exception","reason":"no such index","resource.type":"index_or_alias","resource.id":"magento","index_uuid":"na","index":"magento"}],"type":"index_not_found_exception","reason":"no such index","resource.type":"index_or_alias","resource.id":"magento","index_uuid":"na","index":"magento"},"status":404}

    Trace: #0 /app/public/lib/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Connections/GuzzleConnection.php(194): Elasticsearch\Connections\GuzzleConnection->process4xxError(Object(Guzzle\Http\Message\Request), Object(Guzzle\Http\Exception\ClientErrorResponseException), NULL) #1 /app/public/lib/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Connections/GuzzleConnection.php(104): Elasticsearch\Connections\GuzzleConnection->sendRequest(Object(Guzzle\Http\Message\Request), NULL) #2 /app/public/lib/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Transport.php(165): Elasticsearch\Connections\GuzzleConnection->performRequest('GET', 'http://elastics...', Array, NULL) #3 /app/public/lib/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Endpoints/AbstractEndpoint.php(85): Elasticsearch\Transport->performRequest('GET', '/magento/_stats', Array, NULL) #4 /app/public/lib/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Namespaces/IndicesNamespace.php(216): Elasticsearch\Endpoints\AbstractEndpoint->performRequest() #5 /app/public/app/code/community/Smile/ElasticSearch/Model/Resource/Engine/Elasticsearch/Index.php(147): Elasticsearch\Namespaces\IndicesNamespace->stats(Array) #6 /app/public/app/code/community/Smile/ElasticSearch/Model/Resource/Engine/Elasticsearch/Query/Fulltext.php(482): Smile_ElasticSearch_Model_Resource_Engine_Elasticsearch_Index->getStatus() #7 /app/public/app/code/community/Smile/ElasticSearch/Model/Resource/Engine/Elasticsearch/Query/Fulltext.php(445): Smile_ElasticSearch_Model_Resource_Engine_Elasticsearch_Query_Fulltext->_getTermVectors('hallo', 'spelling_de', Array) #8 /app/public/app/code/community/Smile/ElasticSearch/Model/Resource/Engine/Elasticsearch/Query/Fulltext.php(412): Smile_ElasticSearch_Model_Resource_Engine_Elasticsearch_Query_Fulltext->_getQueryTermStats('hallo') #9 /app/public/app/code/community/Smile/ElasticSearch/Model/Resource/Engine/Elasticsearch/Query/Fulltext.php(160): Smile_ElasticSearch_Model_Resource_Engine_Elasticsearch_Query_Fulltext->_analyzeSpelling('hallo') #10 /app/public/app/code/community/Smile/ElasticSearch/Model/Resource/Engine/Elasticsearch/Query/Abstract.php(393): Smile_ElasticSearch_Model_Resource_Engine_Elasticsearch_Query_Fulltext->_prepareFulltextCondition() #11 /app/public/app/code/community/Smile/ElasticSearch/Model/Resource/Engine/Elasticsearch/Query/Abstract.php(206): Smile_ElasticSearch_Model_Resource_Engine_Elasticsearch_Query_Abstract->_assembleQuery() #12 /app/public/app/code/community/Smile/ElasticSearch/Model/Resource/Catalog/Product/Collection.php(323): Smile_ElasticSearch_Model_Resource_Engine_Elasticsearch_Query_Abstract->search() #13 /app/public/app/code/community/Smile/ElasticSearch/Model/Resource/Catalog/Product/Collection.php(338): Smile_ElasticSearch_Model_Resource_Catalog_Product_Collection->getProductCountBySetId() #14 /app/public/app/code/core/Mage/Catalog/Model/Layer.php(290): Smile_ElasticSearch_Model_Resource_Catalog_Product_Collection->getSetIds() #15 /app/public/app/code/community/Smile/ElasticSearch/Model/Catalogsearch/Layer.php(78): Mage_Catalog_Model_Layer->_getSetIds() #16 /app/public/app/code/community/Smile/ElasticSearch/Block/Catalog/Layer/View.php(138): Smile_ElasticSearch_Model_Catalogsearch_Layer->getFilterableAttributes() #17 /app/public/app/code/community/Smile/ElasticSearch/Block/Catalog/Layer/View.php(171): Smile_ElasticSearch_Block_Catalog_Layer_View->_getFilterableAttributes() #18 /app/public/app/code/core/Mage/Core/Block/Abstract.php(297): Smile_ElasticSearch_Block_Catalog_Layer_View->_prepareLayout() #19 /app/public/app/code/core/Mage/Core/Model/Layout.php(456): Mage_Core_Block_Abstract->setLayout(Object(Mage_Core_Model_Layout)) #20 /app/public/app/code/core/Mage/Core/Model/Layout.php(472): Mage_Core_Model_Layout->createBlock('smile_elasticse...', 'smile.elaticsea...') #21 /app/public/app/code/core/Mage/Core/Model/Layout.php(239): Mage_Core_Model_Layout->addBlock('smile_elasticse...', 'smile.elaticsea...') #22 /app/public/app/code/core/Mage/Core/Model/Layout.php(205): Mage_Core_Model_Layout->_generateBlock(Object(Mage_Core_Model_Layout_Element), Object(Mage_Core_Model_Layout_Element)) #23 /app/public/app/code/core/Mage/Core/Model/Layout.php(210): Mage_Core_Model_Layout->generateBlocks(Object(Mage_Core_Model_Layout_Element)) #24 /app/public/app/code/core/Mage/Core/Controller/Varien/Action.php(344): Mage_Core_Model_Layout->generateBlocks() #25 /app/public/app/code/core/Mage/Core/Controller/Varien/Action.php(269): Mage_Core_Controller_Varien_Action->generateLayoutBlocks() #26 /app/public/app/code/core/Mage/CatalogSearch/controllers/ResultController.php(77): Mage_Core_Controller_Varien_Action->loadLayout() #27 /app/public/app/code/core/Mage/Core/Controller/Varien/Action.php(418): Mage_CatalogSearch_ResultController->indexAction() #28 /app/public/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(254): Mage_Core_Controller_Varien_Action->dispatch('index') #29 /app/public/app/code/core/Mage/Core/Controller/Varien/Front.php(172): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http)) #30 /app/public/app/code/core/Mage/Core/Model/App.php(365): Mage_Core_Controller_Varien_Front->dispatch() #31 /app/public/app/Mage.php(683): Mage_Core_Model_App->run(Array) #32 /app/public/index.php(83): Mage::run('', 'store') #33 {main}

    opened by eVo93 0
  • Anchored Product Not Hiding

    Anchored Product Not Hiding

    Preconditions Magento Version : EE 2.2.2

    ElasticSuite Version : 2.6.0

    Environment : Production

    We have an issue when setting all the products in a parent category to Manual sort and clicking on the eye icon to hide the product. Some products just do not hide. We have tried to re-index without and results.

    https://theswimteamstore.net/teamlogin/index/loginpost?username=fox1&password=chapel The above link you can see the products. But look at the screenshot. There are a lot of items listed under the category. But why only some show? I have no idea.

    Any thoughts?

    image

    opened by JerrodDavenport 0
  • Attribute like

    Attribute like "Name", "Description", "Short Description"..etc not have multiple values for the same key. So it should be directly assigned to the Key not Assigned as Array.

    We appreciate you and your team work efforts.

    We post this following Query in Kibana tool.

    POST test_{storecode}_catalog_product/_search { "query": { } }

    It gives the result accurately. but our problem is in the response of "indexed_attributes" of Product Attributes which is searchable from Magento.

    While I have checked some of the attributes like "name" which give us array like:

    "name": [
        "XXX Product Name"
     ],
    

    But it should be like:

    "name": "XXX Product Name",
    

    Like we get in Response Like sku: "sku": "TEST01"

    The reason we are thinking there is some product Attribute like "Name", "Description", "Short Description"..etc not have multiple values for the same key. So it should be directly assigned to the Key not Assigned as Array.

    Actually, this is my thought, how this should work, Please let me know your reason to give it in Array, So I can understand both the flow.

    Looking forward to hearing from you soon.

    opened by nisargrthakkar 0
Releases(1.4.1)
  • 1.4.1(Sep 22, 2017)

  • 1.4.0(Mar 31, 2017)

    New features :

    • Added the ability to choose a "Root Category" on Virtual Categories : This allows to have category facet from this root category displayed.
    • Publishing "Optimizers" and "Behavioral Search" to Open Source : https://github.com/Smile-SA/smile-magento-elasticsearch/blob/release_1.4/doc/behavorial-search.md
    • Added "Virtual Attributes" module : This can be used to create attributes based on rules
    • Refactoring the previous Tracker (made as an elasticsearch plugin) to a Logstash based tracker.

    :white_check_mark: Fixed

    • A bug which could cause issues with undefined indexes on layered navigation (#63)
    • A bug when creating categories via SOAP (#68)
    • A bug where search query containing special chars (especially slashes) would fail. (#66)
    • A bug causing categories not being indexed properly (#71)
    • Not existing option values were indexed.
    • Issue with static caching on query building.
    • Javascript bug when using range slider.
    • Issues related to virtual categories conditions building.
    Source code(tar.gz)
    Source code(zip)
  • 1.3.2(Mar 2, 2016)

  • 1.3(Feb 17, 2016)

    New features :

    • New sort order on facets : "Admin sort" that displays facets options sorted by the attribute's options sort order defined in Back-Office.
    • Various performances improvements
      • Replication is now stopped during full reindex
      • Better performances on clusters
    • Revamp of categories indexation :
      • Performance gain during indexation
      • Ability to choose if category names should be use for fulltext search on products or not (for each category in the back office).

    Relevance improvements :

    Stopwords and cutoff frequency :

    Stopwords are now indexed. Fulltext queries now uses Cutoff Frequency (https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-query.html#query-dsl-match-query-cutoff).

    Based on this Cutoff Frequency, the engine is now able to determine which words are stopwords and autodetect them. They will trigger a boost on the results if they are found, but won't impact filtering. Eg. the following query :

    "The little horse" : Conjunction of "little" and "horse" is the mandatory part of the query for matching. "the" is optional part of the query, but if the word is found, a boost will be applied on matched results.

    Cutoff frequency can be managed on the Back-Office via System > Configuration > Smile Searchandising Suite > Advanced Search Settings > Cutoff Frequency.

    Phrase matching :

    Phrase matching has also been revamped. It allows to apply a boost on phrase "chunks" if they are found in documents. Eg for the query "white horse", if "white" and "horse" appears in the document, and also the position of the term "horse" is 1 more than the term "white", the document will have a boost into results.

    Phrase matching boost can be managed on the Back-Office via System > Configuration > Smile Searchandising Suite > Advanced Search Settings > Phrase match configuration.

    Spellchecking :

    Spellchecking has also been improved to benefits both precedents points. It's relevance is now far better than before and additionally, the engine is now able to deal with pure stopwords queries such as "to be or not to be", or "he and she".

    Boolean attributes :

    Boolean attributes indexation has been reworked too : attribute label is now indexed for products having attribute's value to "Yes", this means a product (let's say, a watch) having a "Adjustable" boolean attribute set to "Yes" will now match a fulltext query like "adjustable watch".

    Fixed :

    • Autocomplete blocks now supports generic blocks cache tags
    • Bug where multiselect attributes were not properly merged between parent and children products
    • Bug where rating facet was computed on non-approved ratings
    Source code(tar.gz)
    Source code(zip)
  • 1.2.1(Feb 10, 2016)

  • 1.2(Feb 10, 2016)

    New :

    • Implementation of a Data Provider pattern to permit easy addition of content to the index. (documentation is here : Indexing custom content).
    • For each search query (via the search term edition screen in Back Office), added the ability to fix products positions in the results.
    • Added a live preview on virtual categories.
    • On virtual categories edition, it is now possible to fix products positions in the results.

    Fixed :

    • Various typographic bugs
    • Issue where newly created category appeared without any name in Back-Office.
    Source code(tar.gz)
    Source code(zip)
  • 1.1(Feb 12, 2015)

  • 1.0(Feb 12, 2015)

Owner
Smile - Open Source Solutions
Smile - Open Source Solutions
Smile ElasticSuite - Magento 2 merchandising and search engine built on ElasticSearch

News ⚠️ Magento versions compatibility : Due to several changes in Magento 2.4.0, we cannot ensure compatibility between ElasticSuite <2.10 and Magent

Smile - Open Source Solutions 724 Dec 30, 2022
A tool that allows to quickly export data from Magento 1 and Magento 2 store and import it back into Magento 2

Simple Import / Export tool A tool that allows to quickly export data from Magento 1 and Magento 2 store and import it back into Magento 2. Table data

EcomDev B.V. 51 Dec 5, 2022
An Elasticsearch engine plugin for Moodle's Global Search

Moodle Global Search - Elasticsearch Backend This plugin allows Moodle to use Elasticsearch as the search engine for Moodle's Global Search. The follo

Catalyst IT 12 Nov 3, 2022
A Magento implementation for validating JSON Structures against a given Schema

Zepgram JsonSchema A Magento implementation for validating JSON Structures against a given Schema with support for Schemas of Draft-3 or Draft-4. Base

Benjamin Calef 1 Nov 5, 2021
Magento 2 Message Queue OS AMQP Broker Implementation

Magento 2 Message Queue AMQP Backend AMQP message queue backend implementation for Rcason_Mq. Installation Require the module via Composer $ composer

Renato 8 Jul 12, 2022
This Magento 2 extension integrates EasyTranslate into Magento 2.

EasyTranslate Magento 2 Connector This Magento 2 extension integrates EasyTranslate into Magento 2. Mind that you need to have an account with EasyTra

Easytranslate ApS 0 Oct 7, 2022
Magento-Functions - A Resource of Magento Functions

Magento-Functions A Resource of Magento Functions Table of Contents Category Product User Cart Checkout General Account [Working w/ URL's] (#urls) Cat

Bryan Littlefield 28 Apr 19, 2021
Magento - Magento Community Editions

Magento Community Edition /// THIS REPOSITORY IS DEPREACTED /// 1.9.4.1 will be the last version update. Please switch over to OpenMage! Either to the

FireGento e. V. 107 Oct 17, 2022
Magento-Vagrant-Puppet-Nginx - Installs magento and a nginx server

Magento-Vagrant-Puppet-Nginx Installs Magento MySQL PHP PHP-FPM Nginx n98-magerun Setup git submodule init git submodule update vagrant up Modify pupp

Christian Münch 61 Aug 10, 2022
Docker-magento - Docker image for Magento 1.6 to 1.9

Docker image for Magento 1.x This repo creates a Docker image for Magento 1.x. Please note The primary goal of this repo is to create Docker images fo

Fu Cheng 144 Nov 18, 2022
Magento-composer-installer - Composer installer for Magento modules

!!! support the maintainer of this project via Patreon: https://www.patreon.com/Flyingmana Magento Composer Installer The purpose of this project is t

null 213 Sep 24, 2022
Chef-magento - Installs and Configures a Magento project

Description Requirements Chef 0.10.0 or higher required (for Chef environment use). Platform Debian, Ubuntu CentOS, Red Hat, Fedora Your basebox must

Inviqa 3 Jun 30, 2020
Cookbook-magento - Collection of recipes to build app stack for the Magento deployments with Chef

Magento Cookbook Collection of recipes to build app stack for the Magento deployments with Chef Installation With Berkshelf echo "cookbook 'magento',

Yevhen Viktorov 37 Sep 26, 2020
Magento-bulk - Bulk Import/Export helper scripts and CLI utilities for Magento Commerce

Magento Bulk Bulk operations for Magento. Configuration Copy config.php.sample to config.php and edit it. Product Attribute Management List All Attrib

Bippo Indonesia 23 Dec 20, 2022
Phpcs-magento-rules - A set of PHPCS rules used by made.com when hacking Magento

Made.com PHPCS Magento Rules A set of PHPCS rules used by made.com when hacking Magento. Pre-Requisites PHPCS Installation Short Version Clone this re

Made.com Tech Team 26 Jun 3, 2020
This Magento extension provides a Real Full Page Caching for Magento powered by Varnish with support of Session-Based information caching (Cart, Customer Accounts, ...) via ESI includes

This Magento extension provides a Real Full Page Caching (FPC) for Magento powered by Varnish with support of Session-Based information caching (Cart, Customer Accounts, ...) via ESI includes

Hugues Alary 95 Feb 11, 2022
Automatically load the next page of products in Magento. Easy to install and configure, this module works 100% out of the box with vanilla Magento 1.9.x and earlier.

Automatically load the next page of products in Magento. Easy to install and configure, this module works 100% out of the box with vanilla Magento 1.9.x and earlier.

Strategery 123 Nov 20, 2021
Foundation 3 Framework for Magento 1.7. Foundation styles and libraries. Magento Responsive theme. Off-canvas Left-Right sidebar columns for mobile.

Magento Foundation 3 Framework Zurb Foundation 3 framework for Magento 1.7. Magento Foundation 3 Version 1.3.0. Demo page: http://magendation.internet

Nando Boronat 62 Apr 1, 2022