在PHP中使用Sigmie构建和搜索Elasticsearch索引
#初学者 #php #elasticsearch #sigmie

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类的新实例,并指定了两个文本字段,即namedescription字段。另外,我们启用了 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类的数组,并用值填充namedescription键。

在此示例中,我们添加了三个代表虚构电影的文档。

$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字段,但我们都检索了namedescription。最后,我们执行搜索并作为JSON响应检索命中。

$search = $sigmie->newSearch('movies')
    ->properties($props)
    ->queryString('mickey')
    ->fields(['name'])
    ->retrieve(['name', 'description'])
    ->get();

$hits = $search->json('hits');

结论
我们介绍了使用Sigmie在Elasticsearch中进行搜索的简单方法。我们已经看到了如何设置索引,用文档填充索引并执行基本搜索。

但是,重要的是要注意,搜索不仅仅是在文档海中找到一个单词。在以后的帖子中,我们将更深入地探索潜水并探索各种技术以增强您的搜索。