Cette page fournit un guide pratique pour commencer rapidement à utiliser l’API Fess.
Démarrez en 5 minutes
Prérequis
Fess est en cours d’exécution (accessible à http://localhost:8080/)
La réponse JSON est activée dans Panneau d’administration > Système > Général
Essayez l’API de recherche
Exemples de commandes curl :
# Recherche simple
curl "http://localhost:8080/api/v1/documents?q=fess"
# Obtenir 20 résultats de recherche
curl "http://localhost:8080/api/v1/documents?q=fess&num=20"
# Obtenir la page 2 (à partir du résultat 21)
curl "http://localhost:8080/api/v1/documents?q=fess&start=20"
# Recherche avec filtre par étiquette
curl "http://localhost:8080/api/v1/documents?q=fess&fields.label=docs"
# Recherche avec facettes (agrégations)
curl "http://localhost:8080/api/v1/documents?q=fess&facet.field=label"
# Recherche avec caractères spéciaux (encodés en URL)
curl "http://localhost:8080/api/v1/documents?q=search%20engine"
Exemple de réponse (formatée) :
{
"q": "fess",
"exec_time": 0.15,
"record_count": 125,
"page_size": 20,
"page_number": 1,
"data": [
{
"title": "Fess - Open Source Enterprise Search Server",
"url": "https://fess.codelibs.org/",
"content_description": "<strong>Fess</strong> is an easy to deploy...",
"host": "fess.codelibs.org",
"mimetype": "text/html"
}
]
}
Essayez l’API de suggestion
# Obtenir des suggestions
curl "http://localhost:8080/api/v1/suggest?q=fes"
# Exemple de réponse
# {"q":"fes","result":[{"text":"fess","kind":"document"}]}
Essayez l’API d’étiquettes
# Obtenir les étiquettes disponibles
curl "http://localhost:8080/api/v1/labels"
Essayez l’API de vérification de santé
# Vérifier l'état du serveur
curl "http://localhost:8080/api/v1/health"
# Exemple de réponse
# {"data":{"status":"green","cluster_name":"fess"}}
Utilisation avec Postman
L’API Fess peut être facilement utilisée avec Postman.
Configuration de la collection
Ouvrez Postman et créez une nouvelle collection
Ajoutez les requêtes suivantes :
API de recherche :
Méthode :
GETURL :
http://localhost:8080/api/v1/documentsParamètres de requête : -
q: Mot-clé de recherche -num: Nombre de résultats (optionnel) -start: Position de départ (optionnel)
API de suggestion :
Méthode :
GETURL :
http://localhost:8080/api/v1/suggestParamètres de requête : -
q: Chaîne de caractères saisie
API d’étiquettes :
Méthode :
GETURL :
http://localhost:8080/api/v1/labels
Variables d’environnement
Nous recommandons d’utiliser les variables d’environnement Postman pour gérer les URL des serveurs.
Créez un nouvel environnement dans « Environnements »
Ajoutez la variable :
fess_url=http://localhost:8080Modifiez l’URL de la requête en
{{fess_url}}/api/v1/documents
Exemples de code par langage de programmation
Python
import requests
import urllib.parse
# URL du serveur Fess
FESS_URL = "http://localhost:8080"
def search(query, num=20, start=0):
"""Appeler l'API de recherche Fess"""
params = {
"q": query,
"num": num,
"start": start
}
response = requests.get(f"{FESS_URL}/api/v1/documents", params=params)
return response.json()
# Exemple d'utilisation
results = search("enterprise search")
print(f"Nombre total de résultats : {results['record_count']}")
for doc in results['data']:
print(f"- {doc['title']}")
print(f" URL : {doc['url']}")
JavaScript (Node.js)
const fetch = require('node-fetch');
const FESS_URL = 'http://localhost:8080';
async function search(query, num = 20, start = 0) {
const params = new URLSearchParams({ q: query, num, start });
const response = await fetch(`${FESS_URL}/api/v1/documents?${params}`);
return response.json();
}
// Exemple d'utilisation
search('enterprise search').then(results => {
console.log(`Nombre total de résultats : ${results.record_count}`);
results.data.forEach(doc => {
console.log(`- ${doc.title}`);
console.log(` URL : ${doc.url}`);
});
});
Java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
public class FessApiClient {
private static final String FESS_URL = "http://localhost:8080";
private final HttpClient client = HttpClient.newHttpClient();
public String search(String query) throws Exception {
String encodedQuery = URLEncoder.encode(query, StandardCharsets.UTF_8);
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(FESS_URL + "/api/v1/documents?q=" + encodedQuery))
.GET()
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
return response.body();
}
public static void main(String[] args) throws Exception {
FessApiClient client = new FessApiClient();
String result = client.search("enterprise search");
System.out.println(result);
}
}
Compatibilité des versions de l’API
| Version de Fess | Version de l’API | Notes |
|---|---|---|
| 15.x | v1 | Dernière version. Support complet des fonctionnalités |
| 14.x | v1 | API similaire. Quelques différences de paramètres possibles |
| 13.x | v1 | Support basique de l’API |
Note
La compatibilité de l’API est maintenue, mais les nouvelles fonctionnalités ne sont disponibles que dans la dernière version. Pour les différences détaillées entre les versions, consultez les Notes de version.
Dépannage
L’API ne fonctionne pas
Vérifier que la réponse JSON est activée
Vérifiez que « Réponse JSON » est activé dans Panneau d’administration > Système > Général.
Erreurs CORS depuis le navigateur
Si vous obtenez des erreurs CORS lors de l’accès depuis un navigateur, utilisez JSONP ou configurez les paramètres CORS sur le serveur.
Exemple JSONP :
curl "http://localhost:8080/api/v1/documents?q=fess&callback=myCallback"Authentification requise
Si des jetons d’accès sont configurés, incluez-les dans l’en-tête de la requête :
curl -H "Authorization: Bearer VOTRE_JETON_ACCES" \ "http://localhost:8080/api/v1/documents?q=fess"
Prochaines étapes
API de recherche - Détails de l’API de recherche
API de suggestions - Détails de l’API de suggestion
Reference de l’API d’administration - Utilisation de l’API d’administration