mirror of
https://github.com/Codappix/search_core.git
synced 2024-11-25 03:56:11 +01:00
FEATURE: Provide new feature to configure the index
This enables you to configure the index which elastic will use. Related: #75
This commit is contained in:
parent
07c9d5a136
commit
a15b78ff45
8 changed files with 59 additions and 7 deletions
|
@ -158,10 +158,13 @@ class Elasticsearch implements Singleton, ConnectionInterface
|
||||||
|
|
||||||
public function deleteIndex($documentType)
|
public function deleteIndex($documentType)
|
||||||
{
|
{
|
||||||
$index = $this->connection->getClient()->getIndex('typo3content');
|
$index = $this->connection->getClient()->getIndex($this->indexFactory->getIndexName());
|
||||||
|
|
||||||
if (! $index->exists()) {
|
if (! $index->exists()) {
|
||||||
$this->logger->notice('Index did not exist, therefore was not deleted.', [$documentType, 'typo3content']);
|
$this->logger->notice(
|
||||||
|
'Index did not exist, therefore was not deleted.',
|
||||||
|
[$documentType, $this->indexFactory->getIndexName()]
|
||||||
|
);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -198,7 +201,7 @@ class Elasticsearch implements Singleton, ConnectionInterface
|
||||||
$this->logger->debug('Search for', [$searchRequest->getSearchTerm()]);
|
$this->logger->debug('Search for', [$searchRequest->getSearchTerm()]);
|
||||||
|
|
||||||
$search = new \Elastica\Search($this->connection->getClient());
|
$search = new \Elastica\Search($this->connection->getClient());
|
||||||
$search->addIndex('typo3content');
|
$search->addIndex($this->indexFactory->getIndexName());
|
||||||
$search->setQuery($this->queryFactory->create($searchRequest));
|
$search->setQuery($this->queryFactory->create($searchRequest));
|
||||||
|
|
||||||
return $this->objectManager->get(SearchResult::class, $searchRequest, $search->search());
|
return $this->objectManager->get(SearchResult::class, $searchRequest, $search->search());
|
||||||
|
|
|
@ -47,6 +47,16 @@ class IndexFactory implements Singleton
|
||||||
$this->configuration = $configuration;
|
$this->configuration = $configuration;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the index name from the typoscript settings.
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getIndexName()
|
||||||
|
{
|
||||||
|
return $this->configuration->get('connections.elasticsearch.index');
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get an index bases on TYPO3 table name.
|
* Get an index bases on TYPO3 table name.
|
||||||
*
|
*
|
||||||
|
@ -57,7 +67,7 @@ class IndexFactory implements Singleton
|
||||||
*/
|
*/
|
||||||
public function getIndex(Connection $connection, $documentType)
|
public function getIndex(Connection $connection, $documentType)
|
||||||
{
|
{
|
||||||
$index = $connection->getClient()->getIndex('typo3content');
|
$index = $connection->getClient()->getIndex($this->getIndexName());
|
||||||
|
|
||||||
if ($index->exists() === false) {
|
if ($index->exists() === false) {
|
||||||
$index->create($this->getConfigurationFor($documentType));
|
$index->create($this->getConfigurationFor($documentType));
|
||||||
|
|
|
@ -5,6 +5,7 @@ plugin {
|
||||||
elasticsearch {
|
elasticsearch {
|
||||||
host = localhost
|
host = localhost
|
||||||
port = 9200
|
port = 9200
|
||||||
|
index = typo3content
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@ plugin {
|
||||||
elasticsearch {
|
elasticsearch {
|
||||||
host = {$plugin.tx_searchcore.settings.connections.elasticsearch.host}
|
host = {$plugin.tx_searchcore.settings.connections.elasticsearch.host}
|
||||||
port = {$plugin.tx_searchcore.settings.connections.elasticsearch.port}
|
port = {$plugin.tx_searchcore.settings.connections.elasticsearch.port}
|
||||||
|
index = {$plugin.tx_searchcore.settings.connections.elasticsearch.index}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -51,5 +51,18 @@ Example::
|
||||||
|
|
||||||
plugin.tx_searchcore.settings.connections.elasticsearch.port = 9200
|
plugin.tx_searchcore.settings.connections.elasticsearch.port = 9200
|
||||||
|
|
||||||
|
.. _index:
|
||||||
|
|
||||||
|
``index``
|
||||||
|
--------
|
||||||
|
|
||||||
|
Used by: :ref:`Elasticsearch`.
|
||||||
|
|
||||||
|
The index where the documents are being indexed to. E.g. default ``typo3content`` for Elasticsearch.
|
||||||
|
|
||||||
|
Example::
|
||||||
|
|
||||||
|
plugin.tx_searchcore.settings.connections.elasticsearch.index = typo3content
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,8 @@ The connection is configurable through the following options:
|
||||||
|
|
||||||
* :ref:`port`
|
* :ref:`port`
|
||||||
|
|
||||||
|
* :ref:`index`
|
||||||
|
|
||||||
* :ref:`mapping`
|
* :ref:`mapping`
|
||||||
|
|
||||||
* :ref:`facets`
|
* :ref:`facets`
|
||||||
|
|
|
@ -5,6 +5,7 @@ plugin {
|
||||||
elasticsearch {
|
elasticsearch {
|
||||||
host = localhost
|
host = localhost
|
||||||
port = 9200
|
port = 9200
|
||||||
|
index = typo3content
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,7 @@ use Codappix\SearchCore\Configuration\ConfigurationContainerInterface;
|
||||||
use Codappix\SearchCore\Connection\Elasticsearch\Connection;
|
use Codappix\SearchCore\Connection\Elasticsearch\Connection;
|
||||||
use Codappix\SearchCore\Connection\Elasticsearch\IndexFactory;
|
use Codappix\SearchCore\Connection\Elasticsearch\IndexFactory;
|
||||||
use Codappix\SearchCore\Tests\Unit\AbstractUnitTestCase;
|
use Codappix\SearchCore\Tests\Unit\AbstractUnitTestCase;
|
||||||
|
use PHPUnit_Framework_MockObject_MockObject;
|
||||||
|
|
||||||
class IndexFactoryTest extends AbstractUnitTestCase
|
class IndexFactoryTest extends AbstractUnitTestCase
|
||||||
{
|
{
|
||||||
|
@ -32,6 +33,11 @@ class IndexFactoryTest extends AbstractUnitTestCase
|
||||||
*/
|
*/
|
||||||
protected $subject;
|
protected $subject;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var PHPUnit_Framework_MockObject_MockObject
|
||||||
|
*/
|
||||||
|
protected $configuration;
|
||||||
|
|
||||||
public function setUp()
|
public function setUp()
|
||||||
{
|
{
|
||||||
parent::setUp();
|
parent::setUp();
|
||||||
|
@ -67,6 +73,11 @@ class IndexFactoryTest extends AbstractUnitTestCase
|
||||||
->method('getClient')
|
->method('getClient')
|
||||||
->willReturn($clientMock);
|
->willReturn($clientMock);
|
||||||
|
|
||||||
|
$this->configuration->expects($this->once())
|
||||||
|
->method('get')
|
||||||
|
->with('connections.elasticsearch.index')
|
||||||
|
->willReturn('typo3content');
|
||||||
|
|
||||||
$this->subject->getIndex($connection, 'someIndex');
|
$this->subject->getIndex($connection, 'someIndex');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -122,10 +133,20 @@ class IndexFactoryTest extends AbstractUnitTestCase
|
||||||
->method('getClient')
|
->method('getClient')
|
||||||
->willReturn($clientMock);
|
->willReturn($clientMock);
|
||||||
|
|
||||||
$this->configuration->expects($this->once())
|
$this->configuration->expects($this->exactly(2))
|
||||||
->method('get')
|
->method('get')
|
||||||
->with('indexing.someIndex.index')
|
->will(
|
||||||
->willReturn($configuration);
|
$this->returnValueMap([
|
||||||
|
[
|
||||||
|
'indexing.someIndex.index',
|
||||||
|
$configuration
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'connections.elasticsearch.index',
|
||||||
|
'typo3content'
|
||||||
|
]
|
||||||
|
])
|
||||||
|
);
|
||||||
|
|
||||||
$this->subject->getIndex($connection, 'someIndex');
|
$this->subject->getIndex($connection, 'someIndex');
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue