Closed nekrasovdmitriy closed 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 ?
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.
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
You need to do :
DB_PASSWORD=yourdbpasword INDEXER_KEY=yourindexerapikey zou reset-search-index
Add all the needed environment variables.
Hi @nekrasovdmitriy, did the solution answer your problem?
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.
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
I managed to solve this issue using everywhere only MASTER key. Using Default Search API key didn't work.
Global search not working, any attempt gives "there are no results"
I am not sure that i configured environments properly:
gunicorm erros log:
meilisearch errors: