> 백엔드 개발 > PHP 튜토리얼 > CakePHP와 함께 Elasticsearch를 사용하는 방법은 무엇입니까?

CakePHP와 함께 Elasticsearch를 사용하는 방법은 무엇입니까?

PHPz
풀어 주다: 2023-06-03 21:34:01
원래의
1046명이 탐색했습니다.

CakePHP는 웹 애플리케이션 개발을 위한 풍부한 기능과 도구를 제공하는 인기 있는 PHP 프레임워크입니다. Elasticsearch는 전체 텍스트 검색 및 분석에 사용되는 또 다른 인기 있는 도구입니다. 이번 글에서는 CakePHP와 함께 Elasticsearch를 활용하는 방법을 소개하겠습니다.

  1. Elasticsearch 구성 요소 설치

먼저 CakePHP와 통합하기 위해 Elasticsearch 구성 요소를 설치해야 합니다. 사용할 수 있는 구성 요소는 많지만 Elasticsearch에서 공식적으로 제공하는 PHP 클라이언트인 elasticsearch-php 구성 요소를 사용하겠습니다.

Composer를 사용하여 구성 요소 설치:

composer require elasticsearch/elasticsearch
로그인 후 복사
  1. 연결 구성

다음으로 Elasticsearch에 대한 연결을 구성해야 합니다. config/app.php 파일에 다음 구성을 추가합니다.

'elastic' => [
    'host' => 'localhost',// Elasticsearch主机
    'port' => '9200',// Elasticsearch端口
],
로그인 후 복사
  1. 모델 생성

이제 Elasticsearch와 상호 작용할 모델을 생성해야 합니다. src/Model에 ElasticsearchModel.php라는 파일을 생성하고 다음 코드를 작성합니다.

<?php
namespace AppModel;

use CakeElasticSearchIndex;

class ElasticsearchModel extends Index
{
    public function initialize(array $config)
    {
        parent::initialize($config);

        $this->setIndex('my_index');// Elasticsearch索引名称
        $this->setType('my_type');// Elasticsearch类型名称
        
        $this->primaryKey('id');// 主键
        $$this->belongsTo('Parent', [
            'className' => 'Parent',
            'foreignKey' => 'parent_id',
        ]);// 关联关系
    }
}
로그인 후 복사
  1. Create index

이제 Elasticsearch 인덱스를 생성할 수 있습니다. 버전 4.x 이전에는 다음 명령을 사용하세요.

bin/cake elasticsearch create_index ElasticsearchModel
로그인 후 복사

버전 4.x 이후에는 다음 명령을 사용하세요.

bin/cake elasticsearch:indices create_indexes ElasticsearchModel
로그인 후 복사
  1. 문서 추가

다음으로 문서를 추가할 수 있습니다. 컨트롤러에서 다음 코드를 작성할 수 있습니다.

public function add()
{
    $this->request->allowMethod('post');
    $data = $this->request->data;

    $document = $this->ElasticsearchModel->newDocument();
    $document->id = $data['id'];
    $document->parent_id = $data['parent_id'];
    $document->title = $data['title'];
    $document->content = $data['content'];
    $document->body = $data['body'];

    if ($this->ElasticsearchModel->save($document)) {
        $this->Flash->success(__('The document has been saved.'));
        return $this->redirect(['action' => 'index']);
    } else {
        $this->Flash->error(__('The document could not be saved. Please, try again.'));
    }
}
로그인 후 복사
  1. 문서 검색

이제 문서를 검색할 수 있습니다. 컨트롤러에서 다음 코드를 작성할 수 있습니다.

public function search()
{
    $this->paginate = [
        'contain' => ['Parent'],
    ];

    $query = $this->request->getQuery('q');
    $documents = $this->ElasticsearchModel->find()
        ->contain(['Parent'])
        ->where(['title LIKE' => "%$query%"])
        ->paginate();

    $this->set(compact('documents'));
}
로그인 후 복사

뷰에서 Paginator를 사용하여 검색 결과를 표시할 수 있습니다.

  1. 문서 삭제

문서를 삭제해야 하는 경우 다음 코드를 사용할 수 있습니다.

public function delete($id)
{
    $this->request->allowMethod(['post', 'delete']);
    $document = $this->ElasticsearchModel->find()->where(['id' => $id])->firstOrFail();
    if ($this->ElasticsearchModel->delete($document)) {
        $this->Flash->success(__('The document has been deleted.'));
    } else {
        $this->Flash->error(__('The document could not be deleted. Please, try again.'));
    }

    return $this->redirect(['action' => 'index']);
}
로그인 후 복사

결론

위는 CakePHP에서 Elasticsearch를 사용하는 방법입니다. 이 과정에서 우리는 elasticsearch-php 컴포넌트를 사용하여 Elasticsearch에 연결하고, Elasticsearch 모델을 생성하고, 인덱스를 생성하고, 문서를 추가하고, 문서를 검색하고, 문서를 삭제했습니다.

개발자에게 Elasticsearch를 사용하는 것은 전체 텍스트 검색 및 분석을 구현하는 간단하고 효과적인 방법입니다. CakePHP에서 Elasticsearch를 사용하면 웹 애플리케이션을 보다 효율적으로 구축하고 더 나은 사용자 경험과 성능을 제공하는 데 도움이 될 수 있습니다.

위 내용은 CakePHP와 함께 Elasticsearch를 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿