Changes
Page history
Create page api-es
authored
Apr 10, 2025
by
m431m
Hide whitespace changes
Inline
Side-by-side
api-elastic.md
0 → 100644
View page @
eaa9eb88
---
title
:
API ElasticSearch
---
### Reverse Proxy vers l'API _Search_ ElasticSearch
```
/api/elastic/<alias(s)>/_search/
```
-
`<alias(s)>`
: Chaîne optionnelle composée d’un ou plusieurs alias séparés par des virgules (ex. :
`main`
,
`pages`
,
`harvest`
,
`posts`
)
-
Les alias peuvent être préfixés par
`-`
pour exclusion, et peuvent inclure un
`*`
en fin pour matcher plusieurs index.
**Méthodes authorisés :**
`GET`
,
`POST`
#### Description
Ce _end-point_ agit comme un proxy inversé sécurisé vers Elasticsearch, en filtrant dynamiquement les index/alias accessibles en fonction :
*
des alias passés dans l’URL,
*
du rôle de l’utilisateur (anonyme, groupe, superuser),
*
de l’existence effective des index/alias.
L’URL est transformée côté backend pour interroger l’upstream Elasticsearch uniquement avec les alias autorisés.
### Exemple de requête
```
bash
curl
-X
POST
"https://example.org/api/elastic/main,harvest/_search/"
\
-H
"Authorization: Token abc123"
\
-H
"Content-Type: application/json"
\
-d
'{"query": {"match_all": {}}}'
```
#### Réponse
JSON natif retourné par Elasticsearch (structure
`hits`
,
`aggregations`
, etc.)
---
### Reverse Proxy vers l'API _Search_ Autocomplete_ ElasticSearch
```
/api/elastic/<alias(s)>/_search/autocomplete/?q=<foo>
```
-
`<alias(s)>`
: Identique à l’endpoint précédent, facultatif.
-
`q`
: Terme recherché pour l’autocomplétion.
**Méthode authorisée :**
`GET`
#### Description
Ce _end-point_ interroge Elasticsearch via proxy pour effectuer une autocomplétion textuelle.
La requête est construite dynamiquement via un template JSON Jinja2, injectant le terme recherché (
`q`
) et la langue courante (
`get_language()`
).
#### Paramètres
| Nom | Type | Obligatoire | Description |
|-----|------|-------------|-------------|
|
`q`
| string | oui | Terme à autocompléter |
|
`alias(s)`
| string (dans URL) | non | Alias ciblés (ex :
`main,pages`
) |
#### Exemple de requête
```
bash
curl
"https://example.org/api/elastic/main/_search/autocomplete/?q=infra"
```
#### Réponse
```
json
{
"results"
:
[
"infrastructure"
,
"infrastructure ferroviaire"
,
"infrastructure routière"
]
}
```
#### Remarques
-
Utilise les mêmes règles de filtrage que
`elastic-proxy-main-view`
pour déterminer les index autorisés.
-
Les résultats sont extraits des champs
`highlight`
retournés par Elasticsearch.