cgwire / zou

Zou is the Kitsu API. It allows you to store and manage your production data
https://zou.cg-wire.com
GNU Affero General Public License v3.0
162 stars 102 forks source link

Entity search not working #831

Closed nekrasovdmitriy closed 2 weeks ago

nekrasovdmitriy commented 2 weeks ago

Global search not working, any attempt gives "there are no results"

I am not sure that i configured environments properly:

Environment="INDEXER_KEY=*******************"
Environment="INDEXER_HOST=127.0.0.1"
Environment="INDEXER_PORT=7700"
Environment="INDEXES_FOLDER=/opt/meilisearch/data.ms/indexes"

gunicorm erros log:

requests.exceptions.HTTPError: 404 Client Error: Not Found for url: http://127.0.0.1:7700/indexes/persons

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/opt/zou/zouenv/lib/python3.12/site-packages/gunicorn/workers/base_async.py", line 55, in handle
    self.handle_request(listener_name, req, client, addr)
  File "/opt/zou/zouenv/lib/python3.12/site-packages/gunicorn/workers/ggevent.py", line 128, in handle_request
    super().handle_request(listener_name, req, sock, addr)
  File "/opt/zou/zouenv/lib/python3.12/site-packages/gunicorn/workers/base_async.py", line 108, in handle_request
    respiter = self.wsgi(environ, resp.start_response)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/flask/app.py", line 1498, in __call__
    return self.wsgi_app(environ, start_response)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/flask/app.py", line 1476, in wsgi_app
    response = self.handle_exception(e)
               ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/flask_restful/__init__.py", line 298, in error_router
    return original_handler(e)
           ^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/flask_restful/__init__.py", line 298, in error_router
    return original_handler(e)
           ^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/flask_restful/__init__.py", line 298, in error_router
    return original_handler(e)
           ^^^^^^^^^^^^^^^^^^^
  [Previous line repeated 20 more times]
  File "/opt/zou/zouenv/lib/python3.12/site-packages/flask_restful/__init__.py", line 295, in error_router
    return self.handle_error(e)
           ^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/flask_restful/__init__.py", line 310, in handle_error
    _handle_flask_propagate_exceptions_config(current_app, e)
  File "/opt/zou/zouenv/lib/python3.12/site-packages/flask/app.py", line 1473, in wsgi_app
    response = self.full_dispatch_request()
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/flask/app.py", line 882, in full_dispatch_request
    rv = self.handle_user_exception(e)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/flask_restful/__init__.py", line 298, in error_router
    return original_handler(e)
           ^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/flask_restful/__init__.py", line 298, in error_router
    return original_handler(e)
           ^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/flask_restful/__init__.py", line 298, in error_router
    return original_handler(e)
           ^^^^^^^^^^^^^^^^^^^
  [Previous line repeated 20 more times]
  File "/opt/zou/zouenv/lib/python3.12/site-packages/flask/app.py", line 772, in handle_user_exception
    return self.ensure_sync(handler)(e)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/zou/app/__init__.py", line 126, in indexer_key_error
    raise error
  File "/opt/zou/zouenv/lib/python3.12/site-packages/flask_restful/__init__.py", line 295, in error_router
    return self.handle_error(e)
           ^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/flask_restful/__init__.py", line 310, in handle_error
    _handle_flask_propagate_exceptions_config(current_app, e)
  File "/opt/zou/zouenv/lib/python3.12/site-packages/flask/app.py", line 880, in full_dispatch_request
    rv = self.dispatch_request()
         ^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/flask/app.py", line 865, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/flask_restful/__init__.py", line 489, in wrapper
    resp = resource(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/flask/views.py", line 110, in view
    return current_app.ensure_sync(self.dispatch_request)(**kwargs)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/flask_restful/__init__.py", line 604, in dispatch_request
    resp = meth(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/flask_jwt_extended/view_decorators.py", line 170, in decorator
    return current_app.ensure_sync(fn)(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/zou/app/blueprints/search/resources.py", line 77, in post
    results["persons"] = index_service.search_persons(
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/zou/app/services/index_service.py", line 177, in search_persons
    index = get_person_index()
            ^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/zou/app/services/index_service.py", line 26, in get_person_index
    return get_index("persons")
           ^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/zou/app/services/index_service.py", line 18, in get_index
    return indexing.get_index(index_name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/flask_caching/__init__.py", line 899, in decorated_function
    rv = self._call_fn(f, *args, **kwargs)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/flask_caching/__init__.py", line 185, in _call_fn
    return ensure_sync(fn)(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/zou/app/indexer/indexing.py", line 61, in get_index
    index = client.get_index(index_name)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/meilisearch/client.py", line 181, in get_index
    return Index(self.config, uid).fetch_info()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/meilisearch/index.py", line 131, in fetch_info
    index_dict = self.http.get(f"{self.config.paths.index}/{self.uid}")
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/meilisearch/_httprequests.py", line 76, in get
    return self.send_request(requests.get, path)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/meilisearch/_httprequests.py", line 68, in send_request
    return self.__validate(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/meilisearch/_httprequests.py", line 138, in __validate
    raise MeilisearchApiError(str(err), request) from err
meilisearch.errors.MeilisearchApiError: MeilisearchApiError. Error code: index_not_found. Error message: Index `persons` not found. Error documentation: https://docs.meilisearch.com/errors#index_not_found Error type: invalid_request

meilisearch errors:

Jul 08 18:23:24 ubuntu-server meilisearch[635]: 2024-07-08T15:23:24.189690Z  WARN HTTP request{method=GET host="127.0.0.1:7700" route=/indexes/persons query_parameters= user_agent=Meilisearch Python (v0.31.3) status_code=404 error=Index `persons` not found.}: tracing_actix_web::middleware: Error encountered while processing the incoming HTTP request: ResponseError { code: 404, messa>
Jul 08 18:23:24 ubuntu-server meilisearch[635]: 2024-07-08T15:23:24.191572Z  INFO HTTP request{method=GET host="127.0.0.1:7700" route=/indexes/persons query_parameters= user_agent=Meilisearch Python (v0.31.3) status_code=404 error=Index `persons` not found.}: meilisearch: close time.busy=4.29ms time.idle=2.44ms
EvanBldy commented 2 weeks ago

Hi @nekrasovdmitriy, I think your meilisearch service is not launched. Have you follow the instructions here : https://zou.cg-wire.com/#set-up-the-indexer-optional ?

nekrasovdmitriy commented 2 weeks ago

The natter is, that i have done everything according to the instructions, meilisearch service is up and running, all environment variables are set, and no luck.

Снимок экрана 2024-07-09 в 23 01 18 Снимок экрана 2024-07-09 в 23 04 41

Traceback (most recent call last):
  File "/opt/zou/zouenv/lib/python3.12/site-packages/meilisearch/_httprequests.py", line 135, in __validate
    request.raise_for_status()
  File "/opt/zou/zouenv/lib/python3.12/site-packages/requests/models.py", line 1024, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 404 Client Error: Not Found for url: http://localhost:7700/indexes/persons

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/opt/zou/zouenv/lib/python3.12/site-packages/gunicorn/workers/base_async.py", line 55, in handle
    self.handle_request(listener_name, req, client, addr)
  File "/opt/zou/zouenv/lib/python3.12/site-packages/gunicorn/workers/ggevent.py", line 128, in handle_request
    super().handle_request(listener_name, req, sock, addr)
  File "/opt/zou/zouenv/lib/python3.12/site-packages/gunicorn/workers/base_async.py", line 108, in handle_request
    respiter = self.wsgi(environ, resp.start_response)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/flask/app.py", line 1498, in __call__
    return self.wsgi_app(environ, start_response)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/flask/app.py", line 1476, in wsgi_app
    response = self.handle_exception(e)
               ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/flask_restful/__init__.py", line 298, in error_router
    return original_handler(e)
           ^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/flask_restful/__init__.py", line 298, in error_router
    return original_handler(e)
           ^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/flask_restful/__init__.py", line 298, in error_router
    return original_handler(e)
           ^^^^^^^^^^^^^^^^^^^
  [Previous line repeated 20 more times]
  File "/opt/zou/zouenv/lib/python3.12/site-packages/flask_restful/__init__.py", line 295, in error_router
    return self.handle_error(e)
           ^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/flask_restful/__init__.py", line 310, in handle_error
    _handle_flask_propagate_exceptions_config(current_app, e)
  File "/opt/zou/zouenv/lib/python3.12/site-packages/flask/app.py", line 1473, in wsgi_app
    response = self.full_dispatch_request()
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/flask/app.py", line 882, in full_dispatch_request
    rv = self.handle_user_exception(e)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/flask_restful/__init__.py", line 298, in error_router
    return original_handler(e)
           ^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/flask_restful/__init__.py", line 298, in error_router
    return original_handler(e)
           ^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/flask_restful/__init__.py", line 298, in error_router
    return original_handler(e)
           ^^^^^^^^^^^^^^^^^^^
  [Previous line repeated 20 more times]
  File "/opt/zou/zouenv/lib/python3.12/site-packages/flask/app.py", line 772, in handle_user_exception
    return self.ensure_sync(handler)(e)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/zou/app/__init__.py", line 126, in indexer_key_error
    raise error
  File "/opt/zou/zouenv/lib/python3.12/site-packages/flask_restful/__init__.py", line 295, in error_router
    return self.handle_error(e)
           ^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/flask_restful/__init__.py", line 310, in handle_error
    _handle_flask_propagate_exceptions_config(current_app, e)
  File "/opt/zou/zouenv/lib/python3.12/site-packages/flask/app.py", line 880, in full_dispatch_request
    rv = self.dispatch_request()
         ^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/flask/app.py", line 865, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/flask_restful/__init__.py", line 489, in wrapper
    resp = resource(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/flask/views.py", line 110, in view
    return current_app.ensure_sync(self.dispatch_request)(**kwargs)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/flask_restful/__init__.py", line 604, in dispatch_request
    resp = meth(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/flask_jwt_extended/view_decorators.py", line 170, in decorator
    return current_app.ensure_sync(fn)(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/zou/app/blueprints/search/resources.py", line 77, in post
    results["persons"] = index_service.search_persons(
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/zou/app/services/index_service.py", line 177, in search_persons
    index = get_person_index()
            ^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/zou/app/services/index_service.py", line 26, in get_person_index
    return get_index("persons")
           ^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/zou/app/services/index_service.py", line 18, in get_index
    return indexing.get_index(index_name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/flask_caching/__init__.py", line 899, in decorated_function
    rv = self._call_fn(f, *args, **kwargs)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/flask_caching/__init__.py", line 185, in _call_fn
    return ensure_sync(fn)(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/zou/app/indexer/indexing.py", line 61, in get_index
    index = client.get_index(index_name)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/meilisearch/client.py", line 181, in get_index
    return Index(self.config, uid).fetch_info()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/meilisearch/index.py", line 131, in fetch_info
    index_dict = self.http.get(f"{self.config.paths.index}/{self.uid}")
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/meilisearch/_httprequests.py", line 76, in get
    return self.send_request(requests.get, path)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/meilisearch/_httprequests.py", line 68, in send_request
    return self.__validate(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/meilisearch/_httprequests.py", line 138, in __validate
    raise MeilisearchApiError(str(err), request) from err
meilisearch.errors.MeilisearchApiError: MeilisearchApiError. Error code: index_not_found. Error message: Index `persons` not found. Error documentation: https://docs.meilisearch.com/errors#index_not_found Error type: invalid_request
EvanBldy commented 2 weeks ago

You need to do :

DB_PASSWORD=yourdbpasword INDEXER_KEY=yourindexerapikey zou reset-search-index

Add all the needed environment variables.

EvanBldy commented 2 weeks ago

Hi @nekrasovdmitriy, did the solution answer your problem?

nekrasovdmitriy commented 2 weeks ago

This manual https://zou.cg-wire.com/#set-up-the-indexer-optional and this one https://zou.cg-wire.com/configuration/#indexer does not describe using API keys at all. Only masterkey is mentioned, that is confusing.

I got API keys this way:

curl -X GET 'http://localhost:7700/keys' \-H 'Authorization: Bearer ***MASTERKEY***'

Output:

{"results":[{"name":"Default Search API Key","description":
"Use it to search from the frontend","key":
"8fef6004373606ccaaf3a7264f952ff2fcd18a7040629cc4f7439be46e6edd18",
"uid":"a6c14397-48cc-4be6-b8c2-efa0b82b5fdf","actions":["search"],"indexes":

["*"],"expiresAt":null,"createdAt":"2024-07-06T12:34:38.487884018Z","updatedAt":"2024-07-06T12:34:38.487884018Z"},
{"name":"Default Admin API Key","description":"Use it for anything that is not a search operation. Caution! Do not expose it on a public frontend",
"key":"********************************************************************************",
"uid":"9f222d96-1215-4f79-a9f1-cedc2889a3a3","actions":["*"],"indexes":

Now i put Default Search API key (not master key) as INDEXER_KEY="" in /etc/systemd/system/zou.service and restart zou from venv:

Resetting search index.
Traceback (most recent call last):
  File "/opt/zou/zouenv/lib/python3.12/site-packages/meilisearch/_httprequests.py", line 135, in __validate
    request.raise_for_status()
  File "/opt/zou/zouenv/lib/python3.12/site-packages/requests/models.py", line 1024, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 403 Client Error: Forbidden for url: http://localhost:7700/indexes

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/opt/zou/zouenv/bin/zou", line 8, in <module>
    sys.exit(cli())
             ^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/click/core.py", line 1157, in __call__
    return self.main(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/click/core.py", line 1078, in main
    rv = self.invoke(ctx)
         ^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/click/core.py", line 1688, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/click/core.py", line 1434, in invoke
    return ctx.invoke(self.callback, **ctx.params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/click/core.py", line 783, in invoke
    return __callback(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/zou/cli.py", line 483, in reset_search_index
    commands.reset_search_index()
  File "/opt/zou/zouenv/lib/python3.12/site-packages/zou/app/utils/commands.py", line 648, in reset_search_index
    index_service.reset_index()
  File "/opt/zou/zouenv/lib/python3.12/site-packages/zou/app/services/index_service.py", line 43, in reset_index
    reset_asset_index()
  File "/opt/zou/zouenv/lib/python3.12/site-packages/zou/app/services/index_service.py", line 75, in reset_asset_index
    reset_entry_index(
  File "/opt/zou/zouenv/lib/python3.12/site-packages/zou/app/services/index_service.py", line 59, in reset_entry_index
    index = indexing.create_index(
            ^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/zou/app/indexer/indexing.py", line 37, in create_index
    task = client.create_index(index_name, {"primaryKey": "id"})
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/meilisearch/client.py", line 79, in create_index
    return Index.create(self.config, uid, options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/meilisearch/index.py", line 172, in create
    task = HttpRequests(config).post(config.paths.index, payload)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/meilisearch/_httprequests.py", line 88, in post
    return self.send_request(requests.post, path, body, content_type, serializer=serializer)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/meilisearch/_httprequests.py", line 68, in send_request
    return self.__validate(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/zou/zouenv/lib/python3.12/site-packages/meilisearch/_httprequests.py", line 138, in __validate
    raise MeilisearchApiError(str(err), request) from err
meilisearch.errors.MeilisearchApiError: MeilisearchApiError. Error code: invalid_api_key. Error message: The provided API key is invalid. 
EvanBldy commented 2 weeks ago

In meilisearch service you just have to set the same key than in the environment variable INDEXER_KEY.

E.g. In /etc/systemd/system/meilisearch.service: ExecStart=/usr/bin/meilisearch --master-key="masterkey"

In /etc/systemd/system/zou.service: Environment="INDEXER_KEY=masterkey"

After that you have to relaunch all the services and to launch index command : DB_PASSWORD=yourdbpasword INDEXER_KEY=yourindexerapikey zou reset-search-index

nekrasovdmitriy commented 2 weeks ago

I managed to solve this issue using everywhere only MASTER key. Using Default Search API key didn't work.