Le schéma définit la structure des données d'une application OpenSearch. Il comprend deux objets de premier niveau : tables, qui décrivent l'organisation de vos données, et indexes, qui régissent la recherche et le filtrage de ces données. Chaque champ d'une table doit être déclaré dans le schéma avant de pouvoir servir à la recherche ou au filtrage.
Exemple
{
"tables": {
"main": {
"primaryTable": true,
"name": "main",
"fields": {
"id": {
"name": "id",
"type": "LITERAL",
"primaryKey": true
},
"title": {
"name": "title",
"type": "TEXT",
"primaryKey": false
},
"buy": {
"name": "buy",
"type": "INT",
"primaryKey": false
},
"cate_id": {
"name": "cate_id",
"type": "INT",
"primaryKey": false
},
"cate_name": {
"name": "cate_name",
"type": "LITERAL",
"primaryKey": false
}
}
}
},
"indexes": {
"searchFields": {
"id": {
"fields": [
"id"
]
},
"default": {
"fields": [
"title"
],
"analyzer": "chn_standard"
},
"cate_name": {
"fields": [
"cate_name"
]
}
},
"filterFields": [
"id",
"buy",
"cate_id",
"cate_name"
]
}
}
Cet exemple définit une table (main) comportant cinq champs. L'objet indexes associe trois de ces champs à des index de recherche et liste quatre champs comme champs de filtre (attributs).
Structure
Schéma
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
tables |
Objet | Oui | Définitions des tables. Chaque clé correspond au nom d'une table ; consultez la section Table pour connaître la structure de chaque valeur. |
indexes |
Objet | Oui | Configuration des index. Consultez la section Index. |
Table
Exemple
{
"primaryTable": true,
"name": "main",
"fields": {
"id": {
"name": "id",
"type": "LITERAL",
"primaryKey": true
},
"title": {
"name": "title",
"type": "TEXT",
"primaryKey": false
}
}
}
Structure
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
name |
Chaîne | Oui | Nom de la table. |
primaryTable |
Booléen | Oui | Indique si cette table est la table principale. |
fields |
Objet | Oui | Définitions des champs. Chaque clé correspond au nom d'un champ ; consultez la section Champ pour connaître la structure de chaque valeur. |
Champ
Exemple
{
"name": "json_nested",
"type": "NESTED",
"primaryKey": false,
"innerSchema": {
"job": {
"name": "job",
"type": "TEXT",
"primaryKey": false
},
"ssn": {
"name": "ssn",
"type": "LITERAL",
"primaryKey": false
}
}
}
Structure
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
name |
Chaîne | Oui | Nom du champ. |
type |
Chaîne | Oui | Type du champ : LITERAL, TEXT, INT, NESTED ou OBJECT. Pour plus de détails, consultez la page Schéma d'application. |
primaryKey |
Booléen | Oui | Indique si ce champ est la clé primaire. |
joinWith |
Tableau | Non | Associe ce champ à des tables de données externes liées. |
innerSchema |
Objet | Non | Structure des champs imbriqués. Obligatoire lorsque le type est défini sur OBJECT ou NESTED. Prend en charge plusieurs niveaux d'imbrication. |
Index
Exemple
{
"searchFields": {
"default": {
"fields": [
"title"
],
"analyzer": "chn_standard"
},
"id": {
"fields": [
"id"
]
}
},
"filterFields": [
"id"
]
}
Structure
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
searchFields |
Objet | Oui | Définitions des index de recherche en texte intégral. Chaque clé correspond au nom d'un index ; consultez la section SearchField pour connaître la structure de chaque valeur. |
filterFields |
Tableau | Oui | Liste des champs d'attribut. |
SearchField
Exemple
{
"fields": ["title"],
"analyzer": "chn_standard"
}
Structure
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
fields |
Tableau | Oui | Champs de la table inclus dans cet index de recherche. |
analyzer |
Chaîne | Non | Analyseur à appliquer. Pour les analyseurs personnalisés, consultez la section Analyseurs personnalisés. Pour les analyseurs intégrés, reportez-vous aux sections Analyseurs intégrés ci-dessous et Analyseurs intégrés. |
Analyseurs intégrés
Chinois
| Analyseur | Description |
|---|---|
chn_standard |
Analyse chinoise générale. À utiliser pour la plupart des champs de recherche en texte intégral en chinois. |
chn_single |
Analyse par caractère chinois unique. À utiliser lorsque chaque caractère est traité comme un jeton indépendant. |
chn_ecommerce |
Analyse chinoise pour le commerce électronique. Optimisée pour les noms de produits et les requêtes d'achat. |
chn_film |
Analyse chinoise pour la vidéo et le divertissement. Optimisée pour les titres de films et les contenus multimédias. |
chn_scene_name |
Analyse des noms personnels chinois. |
chn_scene_org |
Analyse des noms d'organisations chinoises. |
chn_it_content |
Analyse de contenu informatique pour les textes en chinois. |
Anglais
| Analyseur | Description |
|---|---|
eng_standard |
Analyse anglaise avec racinisation (stemming). Fait correspondre les variantes de mots (par exemple, « running » correspond à « run »). |
eng_nostem |
Analyse anglaise sans racinisation. Fait correspondre uniquement les formes exactes des mots. |
Indépendants de la langue et à usage spécial
| Analyseur | Description |
|---|---|
simple |
Analyse simple. Sépare les jetons par les espaces et la ponctuation, et les convertit en minuscules. |
keyword |
Analyse par mot-clé. Traite la valeur entière du champ comme un seul jeton. À utiliser pour les champs nécessitant une correspondance exacte. |
fuzzy |
Analyse floue. Génère des variantes de jetons pour prendre en charge la correspondance approximative. |
numeric |
Analyse numérique. |
geo |
Analyse géolocalisée. À utiliser pour les champs de coordonnées géographiques. |
first_letter |
Analyse simple par première lettre pinyin. Indexe la première lettre de chaque syllabe pinyin. |
full_pinyin |
Analyse complète par transcription pinyin. Indexe la transcription pinyin intégrale. |