J'ai récemment intégré Meillsearch avec InstantSearchJs dans un projet Laravel 10. Tout fonctionne parfaitement mais j'ai un problème avec le deploiment de Meilisearch sur ubuntu.

const {searchClient} = instantMeiliSearch(  
    'http://localhost:7700',  
    '',  
    {  
        placeholderSearch: true,
        primaryKey: 'id', 
  }  
)  
let search = instantsearch({  
    indexName: 'index',  
    searchClient: searchClient,  
})  

search.addWidgets([  
    searchBox({  
        container: '#searchbox',  
        placeholder: 'Rechercher',  
        showLoadingIndicator: true,  
        showReset: true,  
    }),  
    infiniteHits({  
        container: '#infinite-hits',  
        escapeHTML: false,  
        templates: {  
            item(hit, {html, components}) {  
                return html`  
 <div> <div class="img"> <img src="${hit.poster}" alt="poster">  
 </div> <div class="info"> <p>${components.Highlight({attribute: 'name', hit})}</p>  
 <small>${components.Highlight({attribute: 'fonction', hit})}</small>  
 </div> </div> `;  
            },  
            empty(results, {html}) {  
                return html`Aucun résultat pour <q>${results.query}</q>`;  
            },  
        },  
    }),  
])  
search.start()

Mon erreur de la console
app.a0c25223.js:25 MeiliSearchCommunicationError: Not Found: http://127.0.0.1:7700/multi-search
at app.a0c25223.js:25:22114
at h (app.a0c25223.js:25:10023)
at Generator.<anonymous> (app.a0c25223.js:25:11373)
at Generator.throw (app.a0c25223.js:25:10452)
at a (app.a0c25223.js:25:20478)

4 réponses


popotte
Réponse acceptée

Alors si c'est uniquement ton service qui se trouve dans le serveur Ubuntu, alors oui il faut l'héberger, placer un domaine et utiliser ce domaine pour entrer dans le service

Quaund tu utilises localhost ou 127.0.0.1, ca veut dire que ça pointe sur ta machine, donc ton projet cherche le port 7700 de ta machine et pas celui de Ubuntu

Il faudrait remplacer 'http://localhost:7700', par '${process.env.MILLISEARCH_URL}',, installer le package dotEnv, puius depuius l'hébergeur ajouter la variable d'env squi sera le domaine du service

Maintenant si tu as lancé ton projet laravel dans Ubuntu aussi, et donc localhost:8000 c'est bien le localhost de Ubuntu, alors la bizarre

Hello :)

Tu as bien monté le serveur Ubuntu pour lire http://localhost:7700 ?

Tu as bien 7700 dans l'APP_URL du .env?

Tu peux lancer la commande php artisan route:list depuis le serveur Ubuntu ?

Inana
Auteur

Hello :)
Oui, j'ai suivi la documentation et installer meillsearch comme un service (le sevice tourne bien sous le port 7700 et n'es accessible que localement).
En fait, j'ai plusieurs applications sur le serveur et je voudrais qu'ils interagissent avec la même instance de meillsearch.

je crois que le problème vient du l'URL client meillsearch car le service meillsearch n'es pas exposé au monde extérieur.

Inana
Auteur

D'abord, merci beaucoup pour votre aide.
Je vais essayer ça.