1
0

More than 1 year has passed since last update.

App SearchのElasticsearch index-baesdエンジンの日本語検索を試してみた

Last updated at Posted at 2022-12-09

はじめに

Elastic v8.5でGAになったApp SearchのElasticsearch index-baesdエンジンについての現状について調べてみました。
Elastic Cloudのv8.5.0デプロイメントで試しています。

App Searchは簡単に言うと検索エクスペリエンスを可視化したり、GUIベースで検索エンジンをチューニング、カスタマイズすることができるElasticの機能です。もう少し詳しく知りたい場合、他の方が書いた以下の記事を参照してみてください。

セルフマネージド版のElastic App Searchを試してみた
https://qiita.com/tike/items/dc1ed4d0734080a00376

App SearchのElasticsearch index-baesdエンジンについて

これまではApp Searchのインデックスは普通のElasticsearchインデックスとは扱いが異なる、App Searchマネージドなインデックスでした。例えば既存のElasticsearchインデックスに対してApp Search機能を使う、といったことが今までできませんでした。この課題を解消するのがElasticsearch index-baesdであり、v8.5.0でGAとなりました

検証のための事前のセットアップ

今回は日本語全文検索について試したいので、以下のブログにあるインデックスをそのまま再利用してインデックスを構築しました。
https://www.elastic.co/jp/blog/how-to-implement-japanese-full-text-search-in-elasticsearch

詳しい手順はブログの通りでここでは省略しますが、以下のようにmy_fulltext_searchインデックスのmy_fieldに日本語テキストのデータを入れています。

POST _bulk
{"index": {"_index": "my_fulltext_search", "_id": 1}}
{"my_field": "アメリカ"}
{"index": {"_index": "my_fulltext_search", "_id": 2}}
{"my_field": "米国"}
{"index": {"_index": "my_fulltext_search", "_id": 3}}
{"my_field": "アメリカの大学"}
{"index": {"_index": "my_fulltext_search", "_id": 4}}
{"my_field": "東京大学"}
{"index": {"_index": "my_fulltext_search", "_id": 5}}
{"my_field": "帝京大学"}
{"index": {"_index": "my_fulltext_search", "_id": 6}}
{"my_field": "東京で夢の大学生活"}
{"index": {"_index": "my_fulltext_search", "_id": 7}}
{"my_field": "東京大学で夢の生活"}
{"index": {"_index": "my_fulltext_search", "_id": 8}}
{"my_field": "東大で夢の生活"}
{"index": {"_index": "my_fulltext_search", "_id": 9}}
{"my_field": "首都圏の大学 東京"}

Elasticsearch index-baesdエンジンの構築

ではここからApp SearchのElasticsearch index-basedエンジンを作成していきます。App Searchを使い始めるときにコンテンツのエンジンのタイプにて、Elasticsearch index-basedを選択します。

image.png

任意のEngine nameを設定し、そして検索対象のインデックス名を選択します。(今回はわかりやすくするためにあえてエンジン名に-testをつけて分けましたが、インデックスと同じ名前も可能です。)
image.png

エンジン作成後、検索を試すためにSearch UIメニューからサンプルの検索画面を開きます。
image.png

'東京大学'で検索すると、以前より正確な検索結果となりましたね!
スクリーンショット 2022-12-09 11.29.34.jpg

'東大'での検索も。
スクリーンショット 2022-12-09 11.29.45.jpg

試しに'慶應大学'
スクリーンショット 2022-12-09 11.30.35.jpg

従来のApp Searchマネージドエンジンではどうなる?

そもそもインデックスとドキュメントの作り方が大きく違い、以下のような感じとなります。見ての通り、日本語アナライザの細かい設定ができません。エンジン作成時にLanguage設定をJapaneseに指定できますが、、
image.png

[
{"id":1, "my_field": "アメリカ"},
{"id":2, "my_field": "米国"},
{"id":3, "my_field": "アメリカの大学"},
{"id":4, "my_field": "東京大学"},
{"id":5, "my_field": "帝京大学"},
{"id":6, "my_field": "東京で夢の大学生活"},
{"id":7, "my_field": "東京大学で夢の生活"},
{"id":8, "my_field": "東大で夢の生活"},
{"id":9, "my_field": "首都圏の大学 東京"}
]

App Searchマネージドなエンジンだと、エンジンのLanguage設定をJapaneseにしても以下のようにイマイチな結果となります。
image.png

最後に

今回はApp SearchのElasticsearch index-baesdエンジンを検証してみて、日本語の全文検索に対応できそうなところを確認しました。
次回もう少しクライアント側の実装や、App Searchの分析画面でどう見えるかを確認していきたいと思います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0