序章

Meilisearch は、Rustプログラミング言語で記述されたオープンソースのスタンドアロン検索エンジンです。 他の一般的な検索エンジンと比較すると、Meilisearchの展開に必要な手順はごくわずかであり、Meilisearchサーバーを実行して、単一のコマンドラインバイナリを使用してクエリを実行できます。 Meilisearchには、ファジーマッチングやスキーマレスインデックス作成などの機能があり、デモ用のWebフロントエンドが含まれています。 より複雑なデプロイメントは、InstantSearchjavascriptライブラリとの統合をサポートします。

このチュートリアルでは、最初にDockerを使用してUbuntu22.04サーバーでMeilisearchを実行して実験します。 サンプルデータを入力し、コマンドラインと組み込みのWebフロントエンドの両方からクエリを実行します。 また、検索の重み付けやその他の構成の詳細を変更する方法についても説明します。 次に、を使用します docker compose 永続データを保存し、サーバーで自動的に再起動する本番環境対応のMeilisearchサービスをセットアップするには

前提条件

このチュートリアルに従うには、次のものが必要です。

ステップ1—メイリサーチのインストールとサンプルデータの読み込み

Meilisearchは、多くの環境向けのインストールパッケージを提供しています。 活発に開発中であり、内部データ構造はまだ更新されているため、Dockerを介してMeilisearchをインストールすることをお勧めします。 このようにして、システムの特定のメイリサーチ構成を固定し、必要に応じて適切にアップグレードできます。

まず、Docker Hubから最新のMeilisearchイメージ(この記事の執筆時点では0.26.1)をプルします。

  1. docker pull getmeili/meilisearch:v0.26.1

いくつかのパラメータを提供することで、MeilisearchDockerイメージを起動できるようになりました。 docker run:

  1. docker run --rm -p 127.0.0.1:7700:7700 getmeili/meilisearch:v0.26.1

このコマンドは、次のように分類できます。

  • docker run –rm を使用します --rm フラグを立てて、コンテナが終了したときにコンテナ自体がクリーンアップされるようにします。
  • -p 127.0.0.1:7700:7700 ポート7700のサーバーのローカルホストインターフェイスのトラフィックをMeilisearchのデフォルトポートに転送します 7700 Dockerコンテナー内にあるため、通常どおりアクセスできます。 127.0.0.1 と同義です localhost IPv4アドレスを使用する場合。
  • getmeili/meilisearch:v0.26.1 ダウンロードした画像を実行します。

Meilisearchを実行すると、構成の詳細が自動的に生成され、出力に含まれます。 のMeilisearchインデックスディレクトリに注意してください ./data.ms コンテナ内で自動的に生成されています。 このチュートリアルの後半で場所を変更します。 また、メイリサーチはデフォルトでで実行されることに注意してください development ではなく production 構成環境。

…
[secondary_label Output]
Database path:          "./data.ms"
Server listening on:    "http://0.0.0.0:7700"
Environment:            "development"
Commit SHA:             "unknown"
Commit date:            "unknown"
Package version:        "0.26.1"
…

これで、データのない実行中のMeilisearchインスタンスができました。 Meilisearchの使用を開始するには、サンプルデータをロードする必要があります。 The meilisearch プロセスは、実行中のシェルをブロックします。そのため、サーバーへの別の接続を開いて、他のコマンドの実行を続行することもできます。

Meilisearchプロジェクトは、TMDB、TheMovieDatabaseから取得したサンプルのJSON形式のデータセットを提供します。 からデータをダウンロードします docs.meilisearch.com を使用して wget 指図:

  1. wget https://docs.meilisearch.com/movies.json

あなたが実行することができます tail このファイルの内容のスニペットを表示するには:

Output
… {"id":"289239","title":"Mostly Ghostly: Have You Met My Ghoulfriend?","poster":"https://image.tmdb.org/t/p/w500/eiVY4kKpbo1f7wyNubgJX5ILpxg.jpg","overview":"Bella Thorne, Madison Pettis and Ryan Ochoa lead an ensemble cast in this spook-tacular adventure with new ghosts, new thrills, and the return of some old friends. Max (Ochoa) only has eyes for Cammy (Thorne), the smart, popular redhead at school. When Max finally scores a date with Cammy on Halloween, Phears, an evil ghost with plans on taking over the world, unleashes his ghouls and things go haywire. With the help of his ghostly pals, Tara and Nicky, can Max thwart Phears' evil plot, help reunite his ghost friends with their long-lost parents and still make his date with Cammy on Halloween? R.L. Stine's Mostly Ghostly: Have You Met My Ghoulfriend? is a frightful family delight!","release_date":1409619600,"genres":["Family","Fantasy","Horror"]}, {"id":"423189","title":"Right Here Right Now","poster":"https://image.tmdb.org/t/p/w500/sCo1excKlzhKas681CTSe1ujcOa.jpg","overview":"Hamburg, St. Pauli, New Year's Eve. Oskar Wrobel runs a music club in an old hospital at the edge of the Reeperbahn. While fireworks go off in the streets of St. Pauli, he prepares the big final party - the club has to close. Thankfully there is no time to think about it because the chaos is breaking into his living room, all while hell break loose at the club. The film, based on the novel by Tino Hanekamp, was filmed with hundreds of extras attending a real-life three-night-long party.","release_date":1530579600,"genres":["Documentary","Music"]}, {"id":"550315","title":"Fireman Sam - Set for Action!","poster":"https://image.tmdb.org/t/p/w500/2atmRsuSA4tX6sbOEgFzquFWcCV.jpg","overview":"","release_date":1538010000,"genres":["Family","Animation"]} ]

各エントリには、 id タイトルポスター画像へのリンク、オプションで映画の概要、[X136X ]タイムスタンプ形式のリリース日、およびジャンルのリスト。

を使用して、データをMeilisearchにロードできます。 curl HTTP POSTリクエストを作成します。 curl は、コマンドラインでWebリクエストを作成するための強力でユビキタスなツールです。HTTPPOSTは、フォーマットされた送信に使用される数少ない一般的なHTTP動詞の1つです(PUTおよびGETとともに、Webブラウザーで使用されます)。 APIエンドポイントへのデータ。

  1. curl \
  2. -X POST 'http://localhost:7700/indexes/movies/documents' \
  3. -H 'Content-Type: application/json' \
  4. --data-binary @movies.json

に対するさまざまな議論 curl コマンドは次のとおりです。

  • -X POST http://url POSTリクエストを実行してデータを送信することを指定します。
  • -H 'Content-Type: application/json' ファイルタイプを指定するhヘッダーを提供します。
  • --data-binary @movies.json ファイル自体が含まれます。
  • The \ 各行の終わりの文字は、コマンド自体を分割せずにシェルコマンドを複数の行に分割する場合の標準です。

Meilisearchはポートで実行されます 7700 デフォルトでは、 127.0.0.1 ローカルホストIPを反映します。 この場合、次の場所で新しいメイリサーチインデックスを作成しています。 /indexes/movies/documents、JSONファイルをアップロードするためのリクエストに必要なフォーマットを提供します。 これは、CURLを使用してJSONをアップロードする標準的な方法です。

コマンドは、リクエストが正常に実行されたことを示す出力を返す必要があります enqueued. Meilisearchは、すべてのリクエストが完了するのを待つのではなく、非同期で処理します。

Output
{"uid":0,"indexUid":"movies","status":"enqueued","type":"documentAddition","enqueuedAt":"2022-03-09T17:23:18.233702815Z"}

このリクエストのステータスを確認するには、 curl -X GET 新しいへのリクエスト /tasks/ 同じインデックスで作成されたエンドポイント。 このデータは非常に迅速に処理される必要があるため、応答には finishedAt パラメータ:

  1. curl -X GET 'http://localhost:7700/indexes/movies/tasks/0'
Output
{"uid":0,"indexUid":"movies","status":"succeeded","type":"documentAddition","details":{"receivedDocuments":19547,"indexedDocuments":19546},"duration":"PT29.866920116S","enqueuedAt":"2022-03-09T17:23:18.233702815Z","startedAt":"2022-03-09T17:23:18.241475424Z","finishedAt":"2022-03-09T17:23:48.108395540Z"}

これで、サンプルデータが入力されたMeilisearchインデックスが作成されました。 次のステップでは、いくつかのクエリ例を試してデータを調べます。

ステップ2–メイリサーチで検索する

Meilisearchインデックスを検索するには、APIを介して個々のクエリを送信するか、Webインターフェイスを使用して検索します。

APIを介した検索は、HTTPPOSTを介したデータのアップロードと同様に機能します。 検索するには、 /search エンドポイントであり、コマンドラインにクエリJSON全体を含めることができます。 検索してみてください saint 以下を使用してどの映画が返されるかを確認するには curl 指図:

  1. curl \
  2. -X POST 'http://localhost:7700/indexes/movies/search' \
  3. -H 'Content-Type: application/json' \
  4. --data-binary '{ "q": "saint" }'

ヒットのリストを含むJSONオブジェクトを返します。

Output
{ "hits": [ { "id": "45756", "title": "Saint", "poster": "https://image.tmdb.org/t/p/w500/pEPd4mgMwvz6aRhuWkmPUv98P1O.jpg", "overview": "A horror film that depicts St. Nicholas as a murderous bishop who kidnaps and murders children when there is a full moon on December 5.", "release_date": 1288486800, "genres": [] }, { "id": "121576", "title": "Saint Philip Neri I Prefer Heaven", "poster": "https://image.tmdb.org/t/p/w500/z9OsQoM343WsIrP0zMEE06pO1vH.jpg", "overview": "An epic feature film on the famous 'Apostle of Rome' and great friend of youth in the 16th century. One of the most popular saints of all time, St. Philip Neri was widely known for his great charity, deep prayer life, and tremendous humor. Hoping to join St. Ignatius of Loyola's new order of Jesuits and be a missionary to India, Philip was instead guided by Providence to seek out the poor and abandoned youth of Rome to catechize them in the faith and help them find a better life. He became the founder of the religious congregation, the Oratory, that worked with the youth and also labored to re-evangelize a decadent Rome.", "release_date": 1284944400, "genres": [ "Drama" ] }, { "id": "221667", "title": "Saint Laurent", "poster": "https://image.tmdb.org/t/p/w500/ekpT7mTk4t5PjRYZfiyh0sTKpY5.jpg", "overview": "1967-1976. As one of history's greatest fashion designers entered a decade of freedom, neither came out of it in one piece.", "release_date": 1411434000, "genres": [ "Drama" ] }, ...

注:より読みやすいコマンドラインJSONフォーマットを実現するために、という名前の別のツールをインストールできます。 jq を使用して sudo apt install jq. 次に、シェルパイプを使用して、MeilisearchJSON出力を通過させます jq、追加することにより | jq コマンドに。

たとえば、例のタイトルのみを一覧表示するには saint クエリ、インストール jq 次に、次のコマンドを実行します。

  1. curl \
  2. -X POST 'http://localhost:7700/indexes/movies/search' \
  3. -H 'Content-Type: application/json' \
  4. --data-binary '{ "q": "saint" }' | jq -r '.hits [] .title'

次のようなタイトルのリストが表示されます。

[secondary_label Output
Saint
Saint Philip Neri I Prefer Heaven
Saint Laurent
. . .

Meilisearchのあいまい一致機能を示すために、次の検索を試すこともできます。 seint、ユーザーがタイプミスをした可能性があることを前提としています。

  1. curl \
  2. -X POST 'http://localhost:7700/indexes/movies/search' \
  3. -H 'Content-Type: application/json' \
  4. --data-binary '{ "q": "seint" }'

クエリのランキングの詳細により、結果はわずかに異なりますが、「聖人」を含む多くのエントリが表示されます。

Output
{ "hits": [ { "id": "10105", "title": "Saints and Soldiers", "poster": "https://image.tmdb.org/t/p/w500/efhqxap8fLi4v1GEXVvakey0z3S.jpg", "overview": "Five American soldiers fighting in Europe during World War II struggle to return to Allied territory after being separated from U.S. forces during the historic Malmedy Massacre.", "release_date": 1063242000, "genres": [ "War", "Action", "Drama" ] }, { "id": "121576", "title": "Saint Philip Neri I Prefer Heaven", "poster": "https://image.tmdb.org/t/p/w500/z9OsQoM343WsIrP0zMEE06pO1vH.jpg", "overview": "An epic feature film on the famous 'Apostle of Rome' and great friend of youth in the 16th century. One of the most popular saints of all time, St. Philip Neri was widely known for his great charity, deep prayer life, and tremendous humor. Hoping to join St. Ignatius of Loyola's new order of Jesuits and be a missionary to India, Philip was instead guided by Providence to seek out the poor and abandoned youth of Rome to catechize them in the faith and help them find a better life. He became the founder of the religious congregation, the Oratory, that worked with the youth and also labored to re-evangelize a decadent Rome.", "release_date": 1284944400, "genres": [ "Drama" ] }, { "id": "133558", "title": "Saints and Soldiers: Airborne Creed", "poster": "https://image.tmdb.org/t/p/w500/gwqR9UY0xqBZwP2qb8ZPmf9b2lq.jpg", "overview": "A group of American GIs work their way through war-torn France during the final days of the Second World War.", "release_date": 1345165200, "genres": [ "Drama" ] }, …

コマンドライン検索を試したので、ローカルマシンでメイリサーチを実行している場合は、次の場所に移動できます。 http://localhost:7700/ WebUIを表示するためにブラウザで。 リモートサーバーで実行していて、このチュートリアルの前提条件に従っている場合、ファイアウォール構成により、このURLにアクセスできなくなります。 検索インターフェースにアクセスするには、SSHトンネルを作成する必要があります。 ローカルマシンからサーバーへのトンネルを作成するには、次のコマンドを実行します。 ssh とともに -L 国旗。 ポート番号を入力してください 7700 リモートサーバーのIPアドレスと一緒に:

  1. ssh -L 7700:127.0.0.1:7700 sammy@your_server_ip

これで、次のブラウザでダッシュボードにアクセスできるようになります。 http://localhost:7700.

Meilisearchデモインターフェイスでの検索は非常に高速であり、本番環境での使用のエキサイティングなプレビューを提供するはずです。 次のステップでは、検索ランキングとフィルタリングを調整して、特定のパラメーターを他のパラメーターよりもバイアスする例を示します。

ステップ3–検索ランキングとフィルタリングの調整

検索エンジンの重要な機能は、すべてがさまざまなフィールドの重要性を重み付けする何らかの方法を実装していることです。 この重み付けの別の用語は、バイアスです。 たとえば、検索インデックスに複数のフィールドが含まれていて、1つの単語のクエリで検索するとします。 検索エンジンは、フィールドの重要性に基づいて結果をランク付けまたはバイアスする方法についての指示を必要とします。

一部のオープンソース検索エンジンでは、バイアスを構成できません。また、クエリ結果は、検索用語の関連性よりもデータの傾向によって、役に立たないほど広範であるか、歪んでいる可能性があります。 Meilisearchには、さらに設定できるバイアスルールのデフォルトセットがあります。 このカスタマイズ性は、データの詳細に基づいて、より直感的で関連性の高い結果を生成するのに役立ちます。

ランキングルールを確認するには、を使用してHTTPGETリクエストを行うことができます curl/settings/ranking-rules 終点:

  1. curl -X GET 'http://localhost:7700/indexes/movies/settings/ranking-rules'
Output
["words","typo","proximity","attribute","sort","exactness"]

これらのルールについては、Meilisearchドキュメントで詳しく説明されています。 基本的に、フレーズ内の単語の近接性を優先するのではなく、メイリサーチが一般的なタイプミスの解決を優先する方法を微調整できます。

でHTTPPOSTリクエストを送信できます curl 優先順位を変更するために再配置された同じルールのセットを使用して、そのエンドポイントに戻ります。 データセットに量的フィールドが含まれている場合は、それらのフィールドを昇順または降順でバイアスするランキングルールを追加することもできます。 このデータセットでは、 release_date はそのようなフィールドの1つであり、次のように含めることができます。

  1. curl \
  2. -X POST 'http://localhost:7700/indexes/movies/settings/ranking-rules' \
  3. -H 'Content-Type: application/json' \
  4. --data-binary '[
  5. "words",
  6. "typo",
  7. "proximity",
  8. "release_date:asc",
  9. "attribute",
  10. "sort",
  11. "exactness",
  12. "rank:desc"
  13. ]'

このリクエストは enqueued 応答。アップロードに使用した最初のHTTPPOSTと同様です。 movies.json ファイル:

Output
{"uid":1,"indexUid":"meteorites","status":"enqueued","type":"settingsUpdate","enqueuedAt":"2022-03-10T21:36:47.592902987Z"}

Meilisearchを使用すると、同じHTTPGETおよびHTTPPOSTアプローチを使用して、検索可能な属性、結果に表示される属性、およびフィルタリングまたはソートできる属性を記述するルールをクエリおよび更新できます。

たとえば、そもそも特定の属性のみを検索可能にしたい場合や、他の属性( id、エンドユーザーにとって価値がない可能性が高い)結果から除外する場合は、次のJSONリストをPOSTできます。 searchableAttributessettings 終点:

  1. curl \
  2. -X POST 'http://localhost:7700/indexes/movies/settings' \
  3. -H 'Content-Type: application/json' \
  4. --data-binary '{
  5. "searchableAttributes": [
  6. "title",
  7. "overview",
  8. "genres"
  9. ]
  10. }'

今だけ title, overview、 と genres フィールドは検索可能であり、残りはインデックス作成プロセスから除外されます。

のリストをPOSTすることにより、検索結果に表示または非表示にする属性を変更することもできます。 displayedAttributes:

  1. curl \
  2. -X POST 'http://localhost:7700/indexes/movies/settings' \
  3. -H 'Content-Type: application/json' \
  4. --data-binary '{
  5. "displayedAttributes": [
  6. "title",
  7. "overview",
  8. "genres",
  9. "release_date"
  10. ]
  11. }'

これで、リストに含めたフィールドを除いて、映画のすべてのフィールドが非表示になります。 displayedAttributes.

最後に、フィルタリングまたは並べ替えるデータの属性のリストを提供することもできます。 このリストには、比較演算子(たとえば、 > または以上の場合 < 未満の場合)および指定されたセットに含めることによるフィルタリング(ファセット検索とも呼ばれます)。

  1. curl \
  2. -X POST 'http://localhost:7700/indexes/movies/settings' \
  3. -H 'Content-Type: application/json' \
  4. --data-binary '{
  5. "filterableAttributes": [
  6. "genres",
  7. "release_date"
  8. ],
  9. "sortableAttributes": [
  10. "release_date"
  11. ]
  12. }'

これらのルールを組み合わせることで、次のようなクエリを作成できます。

  1. curl \
  2. -X POST 'http://localhost:7700/indexes/movies/search' \
  3. -H 'Content-Type: application/json' \
  4. --data-binary '{ "q": "house", "sort": ["release_date:desc"], "filter": "genres = Horror" }'

このクエリは、「ホラーというジャンルの映画を最新のものから古いものへと検索し、タイトルに「家」という単語が含まれている」というフレーズに相当します。 次のような出力が表示されます。

Output
{ "hits": [ { "id": "82505", "title": "House at the End of the Street", "poster": "https://image.tmdb.org/t/p/w500/t9E3Inaar1CAn5Cwj0M8dTwtD8H.jpg", "overview": "A mother and daughter move to a new town and find themselves living next door to a house where a young girl murdered her parents. When the daughter befriends the surviving son, she learns the story is far from over.", "release_date": 1348189200, "genres": [ "Horror", "Thriller" ] }, { "id": "29293", "title": "House of the Dead 2", "poster": "https://image.tmdb.org/t/p/w500/r95UYIFeCjIVKZ1MPxZwEHITAhg.jpg", "overview": "In Guesta Verde University, the deranged Professor Curien is trying to bring back the dead, killing students for the experiment. There is an outbreak of zombies in the campus, and the government sends a NSA medical research team, formed by Dr. Alexandra Morgan a.k.a. Nightingale and lieutenant Ellis, with a special force leaded by lieutenant Dalton, trying to get the zero sample from the first generation zombie. The team has a very short time to accomplish their mission and leave the place before missiles are sent to destroy the area. However, the place is crowded of hyper sapiens and the group has to fight to survive.", "release_date": 1139616000, "genres": [ "TV Movie", "Horror" ] }, { "id": "10066", "title": "House of Wax", "poster": "https://image.tmdb.org/t/p/w500/r0v8qg78Ol9NIsRGe3DME27ORpd.jpg", "overview": "A group of unwitting teens are stranded near a strange wax museum and soon must fight to survive and keep from becoming the next exhibit.", "release_date": 1114822800, "genres": [ "Horror", "Drama" ] }, …

ドキュメントのインデックス作成、検索、表示にフィールドを含めたり除外したりすることは、ドキュメントベースの検索エンジンのコア機能です。 それらを条件付きで有効にすると、検索パフォーマンスを維持し、エンドユーザーに合わせて検索エンジンを迅速かつ徹底的にカスタマイズすることができます。

Meilisearchの実行、クエリ、設定の方法を説明したので、このチュートリアルの次のステップでは、 docker-compose 安全な認証キーを使用してバックグラウンドで実行できるようにするMeilisearchの設定。

ステップ4– Docker-Compose構成の作成と、キーベースの認証の使用

他のサーバー側アプリケーションと同様に、メイリサーチインデックスのエンドユーザーは、インデックスが常に実行され、利用可能であると想定する必要があります。 Meilisearchをサーバーで定期的に再起動し、そのログを追跡できるようにするには、 docker-compose 自動的に管理できるようにする構成。

まず、にディレクトリを作成します /var/local これは、メイリサーチが検索インデックスやその他の設定の詳細を永続的に保存するために使用できます。

  1. sudo mkdir /var/local/meilisearch

その後、既存の作業環境にというディレクトリを作成します。 meilisearch-docker、MeilisearchのDocker構成を保存するために使用され、その後 cd そのディレクトリに:

  1. mkdir ~/meilisearch-docker
  2. cd ~/meilisearch-docker

次に、 nano またはお気に入りのテキストエディタで、というファイルを開きます docker-compose.yml:

  1. nano docker-compose.yml

以下の内容をファイルにコピーします。 これがMeilisearchDocker構成になります。

docker-compose.yml
version: "3.9"
services:
  meilisearch:
    image: "getmeili/meilisearch:v0.26.1"
    restart: unless-stopped
    ports:
      - "127.0.0.1:7700:7700"
    volumes:
      - /var/local/meilisearch:/data.ms
    env_file:
      - ./meilisearch.env

ファイルを保存して閉じます。 使用している場合 nano、 押す Ctrl+X、プロンプトが表示されたら、 Y その後 ENTER.

このファイルで使用されている設定は、元のファイルと同様です。 docker このチュートリアルの前半で実行した構文に、いくつかの追加があります。

  • restart:unless-stopped これは、このサービスがバックグラウンドで実行を継続し、手動で停止しない限り、再起動しても持続することを意味します。
  • Meilisearchインデックスは永続的であり、に保存されます。 /var/local/meilisearch ローカルマシンで。
  • env_file 環境ファイルを宣言し、 ./meilisearch.env、メイリサーチオプションを設定します。

環境変数を使用すると、実行できます meilisearch 追加のオプションを使用して、実行時に構成を効果的に宣言します。 環境変数の使用は、アプリケーションに固有の構成ファイルを編集する必要なしに、アプリケーションパラメーターを構成するための一貫したシステム全体の方法です。 docker-compose 別のファイルで環境変数を宣言して、メインに秘密情報を含める必要をなくすことができます docker-compse.yml 構成。

Meilisearchを本番モードで実行するには、安全に使用できるようにAPIキーを設定する必要があります。 独自のキーを作成するか、次を使用してキーを生成できます openssl 指図:

  1. openssl rand -hex 30
Output
173e95f077590ed33dad89247247be8d8ce8b6722ccc87829aaefe3207be

このキーを安全な場所にメモしてください。 最後に、 nano または、お気に入りのテキストエディタをもう一度開いて、という新しいファイルを開きます。 meilisearch.env:

  1. nano meilisearch.env

キーをファイルに貼り付けます MEILI_MASTER_KEY 環境変数:

meilisearch.env
MEILI_MASTER_KEY="173e95f077590ed33dad89247247be8d8ce8b6722ccc87829aaefe3207be"

ファイルを保存して閉じます。 別のシェルで実行されているMeilisearchのインスタンスがまだある場合は、そのターミナルウィンドウに戻ってを押して、インスタンスを閉じる必要があります。 Ctrl+C. これで、を使用して新しいMeilisearchDockerインスタンスを起動できます。 docker-compose up--detach バックグラウンドで実行するには:

  1. docker compose up --detach

を使用して正常に起動したことを確認できます docker ps:

  1. docker compose ps
Output
Name Command State Ports ------------------------------------------------------------------------------------------------------------ meilisearch-docker_meilisearch_1 tini -- /bin/sh -c ./meili ... Up 127.0.0.1:7700->7700/tcp

今後、Meilisearchはサーバーの再起動時に自動的に再起動します。 必要に応じて、に戻ってDockerコンテナを停止できます。 ~/docker-meilisearch ディレクトリと実行中 docker compose stop.

これ docker-compose 構成により、新しい空の検索インデックスも作成されます。これを再入力して、サンプルデータの操作を続行する必要があります。 既存のインデックスを使用して作成したルールを移行する必要がある場合は、メイリサーチアップグレードドキュメントに従うことができます。

Meilisearchインスタンスもキーベースの認証を使用しているため、追加の認証が必要になります -H 'Authorization: Bearer 173e95f077590ed33dad89247247be8d8ce8b6722ccc87829aaefe3207be' すべてのAPIリクエストに含まれるヘッダー。 必要に応じて、 Meilisearch認証ドキュメントを確認して、より詳細なレベルの権限を持つ複数の認証キーを作成できます。

結論

このチュートリアルでは、Dockerを使用してメイリサーチインデックスをデプロイおよび設定しました。 クエリの解析とAPI応答構造の例、およびWebフロントエンドの検索パフォーマンスを確認しました。 を使用して行ったのと同じ方法で、任意のアプリケーションから送信されたJSONリクエストを使用してメイリサーチにクエリを実行できます curl. 検索結果の均等化を変更して実験し、 docker-compose.yml Meilisearchサーバーの実行を管理するファイル。

また、APIキーを作成し、それをMeilisearchが安全な本番環境への展開に備えるための環境変数として構成しました。 ただし、このチュートリアルで使用したWebベースの検索インターフェイスは、ファセットやその他の高度な検索機能のサポートが制限されているため、本番環境で使用するようには設計されていません。 このシリーズの次のチュートリアルでは、Node.jsアプリケーションのInstantSearchライブラリを使用してMeilisearchフロントエンドをデプロイします。