WordPressからElasticsearchに記事情報を投入する

Elasticsearchいいよ Elasticsearch

やりたいこと

WordPressの記事データをElasticsearchで検索したい

やらないといけないこと

WordPressの記事データをElasticsearchに投入する

コード

function put_elasticsearch( $post_id )  {
  // Create Import data 
  $post = get_post( $post_id );
  $query = array(
    'title' => $post->post_title,
    'content' => $post->post_content,
  );
  
  // PUT to Elasticsearch
  $es_endpoint = 'http://example.com';
  $es_index = 'wordpress';
  $es_type  = 'post';
  $es_id = $post_id;
  $es_api = path_join( $es_endpoint, path_join( $es_index, path_join( $es_type, $es_id ) ) );
  $es_args = array(
    'method' => 'POST',
    'body' => json_encode( $query ),
  );
  wp_remote_post( $es_api, $es_args );

  return $post_id;
}
add_action( 'publish_post', 'put_elasticsearch' );

記事の新規追加だけであればPUTの方がいいですが、更新とかでもインデックさせたいのでPOSTを使ってます。
基本的にはhttp://ELASTICSEARCH_ENDPOINT/INDEX/TYPE/IDに対してJSONデータをbodyに入れたリクエストを送ればだいたいOKです。

bulkインポートはちょっとやり方が違うので要注意です。

Follow me!