🎉

ElasticsearchとElastic App Searchの違い

2023/09/22に公開

はじめに

こんにちは。GenAiの平賀です。

Elastic CloudのElastic App Searchを用いて、自社アプリに全文検索機能を実装した際、ElasticsearchとElastic App Searchという似た名前の別サービスについて混乱したので、これから同じ思いをする方が出ないような記事になれば幸いです。

Elasticsearchとは

ElasticsearchはElastic社が開発した分散型RESTfulの全文検索エンジンです。
特徴としては以下があります。

  • レスポンスが速い
  • 拡張性が高い
  • 可用性が高い
  • データ格納の自由度が高い

https://www.elastic.co/jp/elasticsearch

Elastic App Searchとは

Elastic Enterprise Searchというサービスの一部で、Elasticsearchをよりアプリケーション検索用に使いやすくしたサービスです。

https://www.elastic.co/jp/enterprise-search/search-applications

ElasticsearchとElastic App Searchの違い

ElasticsearchとElastic App Searchの違いは、Elasticsearchは検索エンジンそのものであり、Elastic App SearchはElasticsearchをより使いやすくした検索エンジンサービスです。

ElasticsearchとElastic App Searchのそれぞれの使い方

ここでは基本的な使い方であるデータ登録とその登録したデータの検索に焦点を当てて、それぞれの使い方を説明します。

データ登録

Elasticsearch

userのように検索対象とする属性情報を付与して登録します。

curl -X POST my-index-000001/_doc/
{
  "@timestamp": "2099-11-15T13:12:00",
  "message": "GET /search HTTP/1.1 200 1070000",
  "user": {
    "id": "kimchy"
  }
}

Elasticsearchと同様に検索対象とする属性情報を付与して登録します。
Elasticsearchとの違いとしては、endpointの構成が違うのと、authが必要になります。

curl -X POST '<ENTERPRISE_SEARCH_BASE_URL>/api/as/v1/engines/national-parks-demo/documents' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer private-xxxxxxxxxxxxxxxxxxxx' \
-d '[
  {
    "description": "Death Valley is the hottest, lowest, and driest place in the United States. Daytime temperatures have topped 130 °F (54 °C) and it is home to Badwater Basin, the lowest elevation in North America. The park contains canyons, badlands, sand dunes, and mountain ranges, while more than 1000 species of plants grow in this geologic graben. Additional points of interest include salt flats, historic mines, and springs.",
    "nps_link": "https://www.nps.gov/deva/index.htm",
    "states": [
      "California",
      "Nevada"
    ],
    "title": "Death Valley",
    "visitors": "1296283",
    "world_heritage_site": "false",
    "location": "36.24,-116.82",
    "acres": "3373063.14",
    "square_km": "13650.3",
    "date_established": "1994-10-31T06:00:00Z",
    "id": "park_death-valley"
  }
]'

登録したデータの検索

Elasticsearch

query→bool→filter→term→検索対象項目→検索語句という階層構造で検索します。

curl GET /shirts/_search
{
  "query": {
    "bool": {
      "filter": [
        { "term": { "color": "red"   }},
        { "term": { "brand": "gucci" }}
      ]
    }
  }
}

Elastic App Search

search_fields→検索対象項目という階層構造で検索対象項目を指定し、query→検索語句という階層構造で検索語句を指定します。
Elasticsearchとの違いとしては、検索対象項目と検索語句を別々に指定します。

curl -X POST '<ENTERPRISE_SEARCH_BASE_URL>/api/as/v1/engines/national-parks-demo/search' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer search-soaewu2ye6uc45dr8mcd54v8' \
-d '{
  "search_fields": {
    "title": {},
    "description": {},
    "states": {}
  },
  "query": "everglade"
}'

まとめ

ElasticsearchとElastic App Searchは、Elastic cloudで提供される似た名前のサービスなのに、使い方は少し違っていて初めて使うときにどっちのリファレンスを見ればいいのかわからなくなりました。この記事を見て、そのような混乱が解消される人がいたら幸いです。

開発会社をお探しの方、日本語でのFlutterFlowの技術サポート/設計/開発請負について

上記、興味あればFlutterFlowを使ったアプリ開発の技術サポートや、設計・開発の請負も弊社では行っているので興味あればお声がけください!
開発会社をお探しであれば、通常の要件定義から設計・実装また保守まで対応可能です。ローコードならではの迅速な開発や、費用感を抑えた開発をご希望の方はぜひご連絡ください。

サービスページ: https://studio.genai.co.jp/
弊社お問い合わせ先→ info@genai.co.jp

では!

Discussion