ホームページ  >  記事  >  バックエンド開発  >  PHP で Elasticsearch を使用して分散検索エンジンを実装する

PHP で Elasticsearch を使用して分散検索エンジンを実装する

WBOY
WBOYオリジナル
2023-10-03 09:01:511373ブラウズ

PHP 中使用 Elasticsearch 实现分布式搜索引擎

PHP で Elasticsearch を使用して分散検索エンジンを実装する

はじめに:
分散検索エンジンは、最新のインターネット アプリケーションの非常に重要な部分です。 -テキスト検索、効率的なデータ検索と並べ替え。 Elasticsearch は、Lucene をベースにしたオープンソースの分散検索エンジンで、強力な検索機能と分析機能を提供します。この記事では、PHP で Elasticsearch を使用して単純な分散検索エンジンを実装する方法を紹介し、具体的なコード例を示します。

前提条件:
始める前に、Elasticsearch と PHP 環境がインストールされ、Elasticsearch に正常に接続されていることを確認してください。 Elasticsearch は、Elasticsearch の公式 Web サイト (https://www.elastic.co/downloads/elasticsearch) からダウンロードしてインストールでき、Elasticsearch の PHP クライアントは Composer (https://www.elastic.co/guide/) からインストールできます。 ja /elasticsearch/client/php-api/current/introduction.html#_installation_2)。

背景例:
システム内に複数のブログ投稿とタグがあるブログ システムがあるとします。キーワードでブログ投稿を検索し、関連性に従って並べ替えられるようにしたいと考えています。 Elasticsearch を使用してシンプルな分散検索エンジンを構築し、ブログ記事の全文検索と並べ替えを実装します。

サンプル コード:
以下は、Elasticsearch の PHP クライアントを使用して分散検索エンジンを実装する方法を示す簡単なサンプル コードです:

<?php
require 'vendor/autoload.php';

// 设置Elasticsearch的连接信息
$hosts = [
    [
        'host' => 'localhost',
        'port' => 9200,
        'scheme' => 'http',
        'user' => 'username', // 可选的用户名
        'pass' => 'password' // 可选的密码
    ]
];

// 创建Elasticsearch客户端
$client = ElasticsearchClientBuilder::create()
            ->setHosts($hosts)
            ->build();

// 创建索引(博客文章)
$params = [
    'index' => 'blog',
    'body' => [
        'settings' => [
            'number_of_shards' => 2, // 分片数
            'number_of_replicas' => 1 // 副本数
        ],
        'mappings' => [
            'properties' => [
                'title' => [
                    'type' => 'text',
                    'analyzer' => 'standard'
                ],
                'content' => [
                    'type' => 'text',
                    'analyzer' => 'standard'
                ],
                'tags' => [
                    'type' => 'keyword'
                ]
            ]
        ]
    ]
];

$response = $client->indices()->create($params);

// 添加文档(博客文章)
$params = [
    'index' => 'blog',
    'id' => 1,
    'body' => [
        'title' => 'PHP入门教程',
        'content' => '这是一篇PHP入门教程的示例文章。',
        'tags' => ['PHP', '教程']
    ]
];

$response = $client->index($params);

// 搜索文档(博客文章)
$params = [
    'index' => 'blog',
    'body' => [
        'query' => [
            'match' => [
                'content' => 'PHP'
            ]
        ],
        'sort' => [
            '_score' => 'desc'
        ]
    ]
];

$response = $client->search($params);

// 解析搜索结果
foreach ($response['hits']['hits'] as $hit) {
    $source = $hit['_source'];
    echo '文章标题:' . $source['title'] . '<br>';
    echo '文章内容:' . $source['content'] . '<br>';
    echo '相关标签:' . implode(', ', $source['tags']) . '<br>';
    echo '<hr>';
}
?>

概要:
この記事の概要PHP で Elasticsearch を使用してシンプルな分散検索エンジンを実装する方法を学びます。この例を通じて、インデックスの作成、ドキュメントの追加、ドキュメントの検索、検索結果の解析など、Elasticsearch の基本操作を学習しました。実際のアプリケーションでは、カスタム アナライザー、フィルター、集計など、必要に応じてより複雑な操作を実行できます。この記事があなたのお役に立ち、Elasticsearch をより深く学び、応用するきっかけになれば幸いです。

以上がPHP で Elasticsearch を使用して分散検索エンジンを実装するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。