Elasticsearch是一款功能强大的搜索引擎,可让您快速有效地索引和搜索大量数据。在这篇博客文章中,我们将探讨如何创建Elasticsearch索引,用文档填充它,并使用php中的Sigmie Library进行搜索。
找到安装Sigmie here的指令。
联系
在我们可以使用Sigmie与Elasticsearch进行交互之前,我们需要设置Sigmie客户端。我们需要连接到Elasticsearch并创建Sigmie类的实例。
use Sigmie\Base\Http\ElasticsearchConnection;
use Sigmie\Http\JSONClient;
use Sigmie\Sigmie;
$http = JSONClient::create(['localhost:9200']);
$connection = new ElasticsearchConnection($http);
$sigmie = new Sigmie($connection);
创建索引
要开始,我们需要设置一个Elasticsearch,让我们使用movies
索引名称。我们还需要定义索引属性。为此,我们创建了Sigmie\Mappings\NewProperties
Builder类的新实例,并指定了两个文本字段,即name
和description
字段。另外,我们启用了 selflcasing 将提高我们的搜索相关性。
use Sigmie\Mappings\NewProperties;
$properties = new NewProperties;
$properties->text('name');
$properties->text('description');
$index = $sigmie->newIndex('movies')
->properties($properties)
->lowercase()
->create();
填充索引
创建索引后,我们可以用文档填充它。我们创建一个Sigmie\Document\Document
类的数组,并用值填充name
和description
键。
在此示例中,我们添加了三个代表虚构电影的文档。
$index->merge([
new Document([
'name' => 'Mickey',
'description' => 'Adventure in the woods',
]),
new Document([
'name' => 'Goofy',
'description' => 'Mickey and his friends',
]),
new Document([
'name' => 'Donald',
'description' => 'Chasing Goofy',
]),
]);
执行搜索
填充索引后,我们可以搜索它。我们创建一个新的搜索实例,指定索引名称并传递与前面定义的相同属性。我们将搜索查询字符串设置为mickey
,并指定要搜索和检索的字段。在我们的示例中,我们仅搜索name
字段,但我们都检索了name
和description
。最后,我们执行搜索并作为JSON响应检索命中。
$search = $sigmie->newSearch('movies')
->properties($props)
->queryString('mickey')
->fields(['name'])
->retrieve(['name', 'description'])
->get();
$hits = $search->json('hits');
结论
我们介绍了使用Sigmie在Elasticsearch中进行搜索的简单方法。我们已经看到了如何设置索引,用文档填充索引并执行基本搜索。
但是,重要的是要注意,搜索不仅仅是在文档海中找到一个单词。在以后的帖子中,我们将更深入地探索潜水并探索各种技术以增强您的搜索。