El esquema define la estructura de datos de una aplicación de OpenSearch. Contiene dos objetos de nivel superior: tables, que describe cómo se organizan los datos, y indexes, que controla cómo se buscan y filtran dichos datos. Cada campo de una tabla debe registrarse en el esquema antes de poder buscarlo o utilizarlo como filtro.
Ejemplo
{
"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"
]
}
}
Este ejemplo define una tabla (main) con cinco campos. El objeto indexes asigna tres de esos campos a índices de búsqueda y enumera cuatro campos como campos de filtro (atributo).
Estructura
Esquema
|
Campo |
Tipo |
Obligatorio |
Descripción |
|
|
Object |
Sí |
Definiciones de tablas. Cada clave es un nombre de tabla; consulte Tabla para conocer la estructura de cada valor. |
|
|
Object |
Sí |
Configuración de índices. Consulte Índice. |
Tabla
Ejemplo
{
"primaryTable": true,
"name": "main",
"fields": {
"id": {
"name": "id",
"type": "LITERAL",
"primaryKey": true
},
"title": {
"name": "title",
"type": "TEXT",
"primaryKey": false
}
}
}
Estructura
|
Campo |
Tipo |
Obligatorio |
Descripción |
|
|
String |
Sí |
Nombre de la tabla. |
|
|
Boolean |
Sí |
Indica si esta tabla es la tabla principal. |
|
|
Object |
Sí |
Definiciones de campos. Cada clave es un nombre de campo; consulte Campo para conocer la estructura de cada valor. |
Campo
Ejemplo
{
"name": "json_nested",
"type": "NESTED",
"primaryKey": false,
"innerSchema": {
"job": {
"name": "job",
"type": "TEXT",
"primaryKey": false
},
"ssn": {
"name": "ssn",
"type": "LITERAL",
"primaryKey": false
}
}
}
Estructura
|
Campo |
Tipo |
Obligatorio |
Descripción |
|
|
String |
Sí |
Nombre del campo. |
|
|
String |
Sí |
Tipo de campo: |
|
|
Boolean |
Sí |
Indica si este campo es la clave principal. |
|
|
Array |
No |
Vincula este campo con tablas de datos externas vinculadas. |
|
|
Object |
No |
Estructura del campo anidado. Es obligatorio cuando |
Índice
Ejemplo
{
"searchFields": {
"default": {
"fields": [
"title"
],
"analyzer": "chn_standard"
},
"id": {
"fields": [
"id"
]
}
},
"filterFields": [
"id"
]
}
Estructura
|
Campo |
Tipo |
Obligatorio |
Descripción |
|
|
Object |
Sí |
Definiciones de índices de búsqueda de texto completo. Cada clave es un nombre de índice; consulte SearchField para conocer la estructura de cada valor. |
|
|
Array |
Sí |
Lista de campos de atributo. |
SearchField
Ejemplo
{
"fields": ["title"],
"analyzer": "chn_standard"
}
Estructura
|
Campo |
Tipo |
Obligatorio |
Descripción |
|
|
Array |
Sí |
Campos de la tabla incluidos en este índice de búsqueda. |
|
|
String |
No |
Analizador que se aplica. Para analizadores personalizados, consulte Custom analyzers. Para analizadores integrados, consulte Built-in analyzers más abajo y Built-in analyzers. |
Analizadores integrados
Chino
|
Analizador |
Descripción |
|
|
Análisis general de chino. Úselo para la mayoría de los campos de búsqueda de texto completo en chino. |
|
|
Análisis por carácter chino individual. Úselo cuando cada carácter deba tratarse como un token independiente. |
|
|
Análisis de comercio electrónico en chino. Optimizado para nombres de productos y consultas de compras. |
|
|
Análisis de video y entretenimiento en chino. Optimizado para títulos de películas y contenido multimedia. |
|
|
Análisis de nombres de personas en chino. |
|
|
Análisis de nombres de organizaciones en chino. |
|
|
Análisis de contenido de TI para texto en chino. |
Inglés
|
Analizador |
Descripción |
|
|
Análisis de inglés con reducción a raíces (stemming). Coincide con variantes de palabras (por ejemplo, "running" coincide con "run"). |
|
|
Análisis de inglés sin reducción a raíces. Coincide únicamente con formas exactas de las palabras. |
Independientes del idioma y de propósito especial
|
Analizador |
Descripción |
|
|
Análisis simple. Divide el texto por espacios en blanco y signos de puntuación, y convierte los tokens a minúsculas. |
|
|
Análisis de palabras clave. Trata todo el valor del campo como un único token. Úselo para campos de coincidencia exacta. |
|
|
Análisis difuso. Genera variantes de tokens para admitir coincidencias aproximadas. |
|
|
Análisis numérico. |
|
|
Análisis de geolocalización. Úselo para campos de coordenadas geográficas. |
|
|
Análisis simple de ortografía pinyin. Indexa la primera letra de cada sílaba pinyin. |
|
|
Análisis completo de ortografía pinyin. Indexa la transcripción pinyin completa. |