Cómo implementar y configurar Meilisearch en Ubuntu 22.04

Introducción

Índice
  1. Introducción
  • Prerrequisitos
  • Paso 1: Instalación de Meilisearch y carga de datos de muestra
  • Paso 2 – Búsqueda con Meilisearch
  • Paso 3: Ajuste de la clasificación y el filtrado de búsqueda
  • Paso 4: creación de una configuración de Docker-Compose y uso de autenticación basada en claves
  • Conclusión
  • Meilisearch es un motor de búsqueda independiente de código abierto escrito en el lenguaje de programación Rust . En comparación con otros motores de búsqueda populares, las implementaciones de Meilisearch requieren muy pocos pasos y puedes ejecutar un servidor Meilisearch y consultarlo usando un solo binario de línea de comandos. Meilisearch tiene funciones como coincidencias aproximadas e indexación sin esquema e incluye una interfaz web para fines de demostración. Las implementaciones más complejas admiten la integración con la biblioteca de JavaScript InstantSearch.

    En este tutorial, primero ejecutará Meilisearch en un servidor Ubuntu 22.04 usando Docker para experimentar con él. Lo llenará con datos de muestra y los consultará tanto desde la línea de comandos como desde la interfaz web incorporada. También explorará cómo cambiar la ponderación de búsqueda y otros detalles de configuración. Luego, lo usará docker composepara configurar un servicio Meilisearch listo para producción que almacene datos persistentes y se reinicie automáticamente con su servidor.

    Prerrequisitos

    Para seguir este tutorial, necesitarás:

    • Un servidor Ubuntu 22.04 configurado siguiendo la guía de configuración inicial del servidor Ubuntu 22.04 , incluido un usuario sudo no root y un firewall.

    • Docker y Docker-compose instalados siguiendo Cómo instalar y usar Docker en Ubuntu 22.04 y el primer paso de Cómo instalar y usar Docker-Compose en Ubuntu 22.04

    Paso 1: Instalación de Meilisearch y carga de datos de muestra

    Meilisearch ofrece paquetes de instalación para muchos entornos. Debido a que se encuentra en desarrollo activo y su estructura de datos interna aún se está actualizando, es una buena idea instalar Meilisearch a través de Docker. De esta manera, puede fijar una configuración específica de Meilisearch para su sistema y actualizarla sin problemas según sea necesario.

    Comience extrayendo la última imagen de Meilisearch (0.26.1 al momento de escribir este artículo) desde Docker Hub:

    1. docker pull getmeili/meilisearch:v0.26.1

    Ahora puedes iniciar la imagen del contenedor Meilisearch proporcionando algunos parámetros a docker run:

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

    Este comando se puede desglosar de la siguiente manera:

    • docker run –rmutiliza la --rmbandera para garantizar que el contenedor limpiará después de sí mismo cuando salga.
    • -p 127.0.0.1:7700:7700reenvía el tráfico en la interfaz localhost de su servidor en el puerto 7700 al puerto predeterminado de Meilisearch 7700dentro del contenedor Docker, para que pueda acceder a él de manera normal. 127.0.0.1es sinónimo de localhostcuando se usan direcciones IPv4.
    • getmeili/meilisearch:v0.26.1ejecuta la imagen que acabas de descargar.

    Cuando ejecute Meilisearch, se generarán automáticamente algunos detalles de configuración y se incluirán en la salida. Tenga en cuenta que el directorio de índice de Meilisearch ./data.msse generó automáticamente dentro del contenedor. Cambiará la ubicación más adelante en este tutorial. Tenga en cuenta también que Meilisearch se ejecuta de forma predeterminada en un entorno developmenten lugar de en un productionentorno de configuración.

    …[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"…

    Ahora tienes una instancia de Meilisearch en ejecución sin datos. Necesitarás cargar algunos datos de muestra para comenzar a trabajar con Meilisearch. El meilisearchproceso bloqueará el shell en el que se inició mientras esté en ejecución, por lo que también deberás abrir una conexión independiente a tu servidor para continuar ejecutando otros comandos.

    El proyecto Meilisearch ofrece un conjunto de datos de muestra con formato JSON extraídos de TMDB, la base de datos de películas. Descargue los datos con docs.meilisearch.comel wgetcomando:

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

    Puedes ejecutar tailpara ver un fragmento del contenido de este archivo:

    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"]}]

    Cada entrada contiene una identificación , un título , un enlace a una imagen de póster , opcionalmente una descripción general de la película, una fecha de lanzamiento en formato de marca de tiempo y una lista de géneros .

    Puede cargar los datos en Meilisearch utilizando curlpara construir una solicitud HTTP POST . curl es una herramienta poderosa y omnipresente para crear solicitudes web en la línea de comandos, y HTTP POST es uno de los pocos verbos HTTP comunes (junto con PUT y GET, utilizados por los navegadores web), utilizado para enviar datos formateados a los puntos finales de la API.

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

    Los distintos argumentos del curlcomando son:

    • -X POST http://urlespecifica que realizará una solicitud POST y enviará datos.
    • -H 'Content-Type: application/json'proporciona un encabezado h , que especifica el tipo de archivo.
    • --data-binary @movies.jsonincluye el archivo en sí.
    • Los caracteres al final de cada línea son estándar para cuando desea dividir un comando de shell en varias líneas sin dividir el comando en sí.

    Meilisearch se ejecuta en el puerto 7700de forma predeterminada y 127.0.0.1refleja una IP de host local. En este caso, estás creando un nuevo índice de Meilisearch en /indexes/movies/documentsy proporcionando el formato necesario en tu solicitud para cargar un archivo JSON. Esta es una forma estándar de cargar JSON con CURL.

    El comando debería devolver un resultado que indique que su solicitud se realizó correctamente enqueued. Meilisearch procesa todas las solicitudes de forma asincrónica en lugar de esperar a que se completen.

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

    Puede comprobar el estado de esta solicitud realizando una curl -X GETsolicitud al nuevo /tasks/punto final creado en el mismo índice. Estos datos deben procesarse muy rápidamente, por lo que la respuesta debe incluir el finishedAtparámetro:

    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"}

    Ahora tienes un índice de Meilisearch con datos de muestra. En el siguiente paso, probarás algunas consultas de ejemplo para explorar los datos.

    Paso 2 – Búsqueda con Meilisearch

    Para buscar en un índice de Meilisearch, puede enviar consultas individuales a través de la API o buscar con una interfaz web.

    La búsqueda a través de la API funciona de manera similar a la carga de datos a través de HTTP POST. Para realizar una búsqueda, debe realizar una solicitud al /searchpunto final y puede incluir todo el JSON de la consulta en la línea de comandos. Intente realizar una búsqueda para saintver qué películas se devuelven con el siguiente curlcomando:

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

    Devolverá un objeto JSON que contiene una lista de resultados:

    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"      ]    },...

    Nota: Para lograr un formato JSON más legible en la línea de comandos, puede instalar otra herramienta denominada jqusing sudo apt install jq. Luego, use las tuberías de shell para pasar la salida JSON de Meilisearch a través de jq, agregando | jqal comando.

    Por ejemplo, para enumerar solo los títulos para la saintconsulta de ejemplo, instale jqy ejecute el siguiente comando:

    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'

    Recibirás una lista de títulos como ésta:

    [secondary_label OutputSaintSaint Philip Neri I Prefer HeavenSaint Laurent. . .

    Para demostrar la funcionalidad de coincidencia aproximada de Meilisearch, también puede intentar buscar seint, suponiendo que un usuario haya cometido un error tipográfico:

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

    Los resultados serán ligeramente diferentes debido a los detalles de la clasificación de la consulta, pero aún verá muchas entradas que contienen “santo”.

    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"      ]    },…

    Ahora que ha experimentado con la búsqueda en la línea de comandos, si está ejecutando Meilisearch en una máquina local, puede navegar hasta ella http://localhost:7700/en un navegador para ver la interfaz de usuario web. Si está ejecutando Meilisearch en un servidor remoto y siguió los requisitos previos de este tutorial, la configuración de su firewall evitará que se pueda acceder a esta URL. Deberá crear un túnel SSH para acceder a la interfaz de búsqueda. Para crear un túnel desde su máquina local hasta su servidor, ejecute sshcon el -Lindicador. Proporcione el número de puerto 7700junto con la dirección IP de su servidor remoto:

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

    Luego deberías poder acceder al panel de control en un navegador en http://localhost:7700.

    La búsqueda en la interfaz de demostración de Meilisearch es extremadamente rápida y debería ofrecer una vista previa interesante del uso en producción. En el siguiente paso, encontrará ejemplos para ajustar la clasificación y el filtrado de búsquedas para favorecer ciertos parámetros en detrimento de otros.

    Paso 3: Ajuste de la clasificación y el filtrado de búsqueda

    Una característica importante de los motores de búsqueda es que todos ellos implementan algún método para ponderar la importancia de los distintos campos. Otro término para esta ponderación es sesgo . Por ejemplo, supongamos que su índice de búsqueda contiene varios campos y realiza una búsqueda con una consulta de una sola palabra. El motor de búsqueda necesita instrucciones sobre cómo clasificar o sesgar sus resultados en función de la importancia de un campo.

    Algunos motores de búsqueda de código abierto no permiten configurar el sesgo, y los resultados de las consultas pueden ser demasiado amplios o estar sesgados por las tendencias de los datos más que por la relevancia de los términos de búsqueda. Meilisearch tiene un conjunto predeterminado de reglas de sesgo que se pueden configurar. Esta capacidad de personalización puede ayudar a producir resultados más intuitivos y relevantes en función de los detalles de los datos.

    Para comprobar sus reglas de clasificación, puede realizar una solicitud HTTP GET utilizando curlel /settings/ranking-rulespunto final:

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

    Estas reglas se explican con mayor detalle en la documentación de Meilisearch . Básicamente, permiten ajustar las formas en que Meilisearch prioriza la resolución de errores tipográficos comunes, en lugar de priorizar la proximidad de las palabras en las frases.

    Puede enviar una solicitud HTTP POST curla ese punto final con el mismo conjunto de reglas reorganizadas para cambiar su orden de prioridad. Si su conjunto de datos incluye campos cuantitativos, también puede agregar reglas de clasificación que sesgarán esos campos en orden ascendente o descendente. En este conjunto de datos, release_datehay uno de esos campos, que podría incluir de la siguiente manera:

    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. ]'

    Esta solicitud devolverá una enqueuedrespuesta, similar al primer HTTP POST que utilizó para cargar el movies.jsonarchivo:

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

    Meilisearch le permite consultar y actualizar reglas que describen qué atributos se pueden buscar, qué atributos se muestran en los resultados y qué atributos se pueden filtrar u ordenar, utilizando el mismo enfoque HTTP GET y HTTP POST.

    Por ejemplo, si desea que solo ciertos atributos se puedan buscar en primer lugar y que otros (como id, que probablemente no tenga valor para un usuario final) se excluyan de los resultados, puede PUBLICAR una lista JSON de searchableAttributesen el settingspunto final:

    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. }'

    Ahora solo se pueden buscar los campos title, overview, y genres, y el resto se excluye del proceso de indexación.

    También puedes cambiar qué atributos se muestran u ocultan en los resultados de búsqueda publicando una lista de 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. }'

    Ahora todos los campos de una película están ocultos, excepto aquellos que incluiste en la lista de displayedAttributes.

    Por último, también puede proporcionar una lista de los atributos de sus datos que se filtrarán u ordenarán. Esta lista incluye tanto el filtrado cuantitativo mediante el uso de operadores comparativos (como para mayor que o para menor que) como el filtrado mediante la inclusión en un conjunto específico, también conocido como búsqueda por facetas.

    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. }'

    En conjunto, estas reglas le permiten crear consultas como las siguientes:

    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" }'

    Esta consulta es el equivalente a la frase escrita: “busca todas las películas del género Terror, desde la más reciente hasta la más antigua, que también contengan la palabra ‘casa’ en el título”. Recibirás un resultado como el siguiente:

    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"      ]    },…

    La inclusión y exclusión de campos en la indexación, búsqueda y visualización de documentos son funciones fundamentales de los motores de búsqueda basados ​​en documentos. Si se habilitan de forma condicional, se puede mantener el rendimiento de la búsqueda y personalizar de forma rápida y exhaustiva el motor de búsqueda para que se adapte a los usuarios finales.

    Ahora que ha explorado cómo ejecutar, consultar y configurar Meilisearch, en el siguiente paso de este tutorial, creará una docker-composeconfiguración para Meilisearch que le permitirá ejecutarse en segundo plano con una clave de autenticación segura.

    Paso 4: creación de una configuración de Docker-Compose y uso de autenticación basada en claves

    Al igual que cualquier otra aplicación del lado del servidor, los usuarios finales de un índice de Meilisearch deben asumir que estará en funcionamiento y disponible en todo momento. Para garantizar que Meilisearch pueda reiniciarse regularmente con su servidor y que se puedan rastrear sus registros, debe crear una docker-composeconfiguración que permita que se administre automáticamente.

    Primero, cree un directorio /var/localque Meilisearch pueda usar para almacenar permanentemente su índice de búsqueda y otros detalles de configuración:

    1. sudo mkdir /var/local/meilisearch

    Después de eso, crea un directorio en tu entorno de trabajo existente llamado meilisearch-docker, que se usará para almacenar una configuración de Docker para Meilisearch, y luego cden ese directorio:

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

    A continuación, utilizando nanosu editor de texto favorito, abra un archivo llamado docker-compose.yml:

    1. nano docker-compose.yml

    Copia el siguiente contenido en el archivo. Esta será tu configuración Docker de Meilisearch.

    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

    Guarde y cierre el archivo. Si está utilizando nano, presione Ctrl+X, luego cuando se le solicite Yy luego ENTER.

    Las configuraciones utilizadas en este archivo son similares a la dockersintaxis original que ejecutó anteriormente en este tutorial, con algunas adiciones:

    • restart:unless-stoppedsignifica que este servicio continuará ejecutándose en segundo plano y persistirá durante los reinicios a menos que lo detenga manualmente.
    • Su índice de Meilisearch ahora es persistente y se almacena en /var/local/meilisearchsu máquina local.
    • env_filedeclara un archivo de entorno, ./meilisearch.env, para configurar las opciones de Meilisearch.

    Las variables de entorno le permiten ejecutar meilisearchcon opciones adicionales para declarar eficazmente su configuración en tiempo de ejecución. El uso de variables de entorno es una forma coherente y de todo el sistema de configurar los parámetros de la aplicación sin necesidad de editar un archivo de configuración específico de la aplicación. docker-composele permite declarar variables de entorno en un archivo independiente para evitar tener que incluir información secreta en la configuración principal docker-compse.yml.

    Para ejecutar Meilisearch en modo de producción, deberá configurar una clave API para un uso seguro. Puede crear su propia clave o generar una con el siguiente opensslcomando:

    1. openssl rand -hex 30
    Output173e95f077590ed33dad89247247be8d8ce8b6722ccc87829aaefe3207be

    Anote esta clave en un lugar seguro. Por último, utilizando nanonuevamente su editor de texto favorito, abra el nuevo archivo llamado meilisearch.env:

    1. nano meilisearch.env

    Pegue su clave en el archivo como MEILI_MASTER_KEYvariable de entorno:

    meilisearch.env

    MEILI_MASTER_KEY="173e95f077590ed33dad89247247be8d8ce8b6722ccc87829aaefe3207be"

    Guarde y cierre el archivo. Si todavía tiene una instancia de Meilisearch ejecutándose en otro shell, ahora debe cerrarla navegando de nuevo a esa ventana de terminal y presionando Ctrl+C. Ahora, puede abrir la nueva instancia de Docker de Meilisearch, usando docker-compose upwith --detachpara ejecutarla en segundo plano:

    1. docker compose up --detach

    Puedes verificar que se inició correctamente utilizando 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

    A partir de ahora, Meilisearch se reiniciará automáticamente cuando se reinicie el servidor. Si alguna vez lo necesitas, puedes detener el contenedor Docker navegando de nuevo al ~/docker-meilisearchdirectorio y ejecutando docker compose stop.

    Esta docker-composeconfiguración también creará un nuevo índice de búsqueda vacío que deberá volver a completar para continuar trabajando con los datos de muestra. Si necesita migrar alguna regla que haya creado con su índice existente, puede consultar la documentación de actualización de Meilisearch .

    Su instancia de Meilisearch ahora también utiliza autenticación basada en claves, lo que requiere que se incluya un encabezado adicional con cada solicitud de API. Puede revisar la documentación de autenticación de Meilisearch para crear múltiples claves de autenticación con niveles de permiso más granulares, si es necesario.-H 'Authorization: Bearer 173e95f077590ed33dad89247247be8d8ce8b6722ccc87829aaefe3207be'

    Conclusión

    En este tutorial, implementó y configuró un índice de Meilisearch con Docker. Observó ejemplos de su análisis de consultas y sus estructuras de respuesta de API, así como su rendimiento de búsqueda en la interfaz web. Puede consultar Meilisearch mediante solicitudes JSON enviadas desde cualquier aplicación, de la misma manera que lo hizo con curl. Experimentó con cambios en la ponderación de los resultados de búsqueda y creó un docker-compose.ymlarchivo para administrar la ejecución de su servidor Meilisearch.

    También creó una clave API y la conf

    SUSCRÍBETE A NUESTRO BOLETÍN 
    No te pierdas de nuestro contenido ni de ninguna de nuestras guías para que puedas avanzar en los juegos que más te gustan.

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Subir

    Este sitio web utiliza cookies para mejorar tu experiencia mientras navegas por él. Este sitio web utiliza cookies para mejorar tu experiencia de usuario. Al continuar navegando, aceptas su uso. Mas informacion