사이트의 검색 구성 요소에 ElasticSearch를 사용하고 있습니다. 인덱싱되고 검색되는 데이터는 MySQL DB에 저장되는 것과 동일한 데이터입니다.MySQL을 사용한 ElasticSearch 사용
내 접근 방식은 해당 CRUD MySQL 작업이 발생할 때 인덱스의 데이터를 추가/삭제/수정하는 것입니다.
예를 들어,이 동작은 다음과 같은 형태 생성 : 데이터가 삭제됩니다
public function savePost(Request $request) {
//Firstly, create the object and save it to MySQL
$post = new Post();
$post->title = $request->title;
$post->body = $request->body;
//...
//and so on
$post->save();
//Secondly, index this new data:
$elasticSearchClient = ClientBuilder::create()->build();
$params = [
'index' => 'some_index_elasticsearch',
'id' => $post->id,
'type' => 'post',
'timestamp' => time(),
'body' => [
'id' => $post->id,
'title' => $post->title,
'body' => $post->body,
//... and so on
],
];
$elasticSearchClient->index($params);
}
경우/MySQL을 업데이트 난 그냥 삭제하거나 인덱스에서 업데이트 것입니다.
이 방법은 MySQL을 ElasticSearch (또는 Sphinx와 같은 다른 유사한 기술)와 함께 사용하는 올바른 방법입니까? 또는 ElasticSearch를위한 더 많은 데이터 소스로 MySQL을 사용하는 더 나은 접근법을 추천 하시겠습니까? (실제로 ElasticSearch와 MySQL 사이에 상호 작용이 없기 때문에 실제로 여기서 일어나지는 않습니다).
차이점이 있으면 https://github.com/elastic/elasticsearch-php을 사용하여 ElasticSearch와 상호 작용합니다.
이 접근법은 지금까지 작동합니다. 맞는지 길인지 또는 누구나 이런 방식으로 문제가 발생할 수 있는지 확실하지 않습니다.