Tipo de campo
tipos de datos de tipo JSON se asignan a Elasticsearch definido, tipos comunes son simples:
tipo de JSON | tipo Elasticsearch |
---|---|
Tipos de texto | Texto / palabra clave |
tipo entero | Entero largo |
tipo de punto flotante | float / double |
Hora | fecha |
valor booleano | booleano |
colección | Texto / palabra clave |
Se hace notar que el tiempo por encima de tipo, JSON y ningún tipo de tiempo, se refiere aquí principalmente al tipo de formato de hora de los datos.
Definir el mapeo
En una base de datos relacional, antes de guardar los datos, primero crear la estructura de la tabla, la existencia de un tipo especificado en el campo. Del mismo modo Elasticsearch antes de realizar el almacenamiento de datos, puede ser definir almacenar datos de mapeo buena estructura.
En primer lugar definir un simple mapeo persona:
Mapeo de la figura anterior es una definición, si es antes ElasticSearch7, mapeos donde hay propiedad _type.
mapa dinámico
Cuando no hay predefinido así Cartografía, añadir datos, Elasticsearch le corresponde automáticamente al tipo de conversión de acuerdo con el campo, pero no necesariamente el tipo de conversión fuera del campo es el tipo que queremos, o intervención necesidad humana de modificar el deseado mapeo.
mapas actualizados
Use dinámica asignaciones de control pueden ser actualizadas.
dinámico-verdadero
conjunto dinámico de true
los valores predeterminados dinámicos defecto, los nuevos datos se puede escribir en el campo, sino que también puede ser indexado, la estructura de asignación será actualizado.
Añadir los datos, pero no más que añadir un definido gender
campo.
# 向 person 中添加数据
PUT person/_doc/1
{
"uId": 1,
"name": "ytao",
"age": 18,
"address": "广东省珠海市",
"birthday": "2020-01-15T12:00:00Z",
"money": 108.2,
"isStrong": true,
"gender": "男" # Mapping 中未定义的字段
}
Agregado con éxito, la búsqueda gender
de campo:
Ver estructura de mapeo:
El nuevo valor del campo añadido durante el mapeo además añadir automáticamente el campo.
dinámica de falso
Dinámica se establece false
, los nuevos datos se puede escribir en el campo, no pueden ser indexados, la estructura de asignación será actualizado.
También primer conjunto dinámico de falso, entonces agregar datos a la parte interior, y otros pasos como anteriormente operación cierto. Mapeo definido, añadir datos.
Buscar gender
campo:
En este nuevo campo de datos que no pueden ser indexados, pero los datos se puede escribir.
Mappnig no va a añadir nuevos campos:
dinámico-estricta
conjunto dinámico a strict
la vez, se puede ver desde el significado literal, el mapeo dinámico es más estricto, el nuevo campo de datos no se puede escribir, no pueden ser indexados, la estructura de asignación y no se actualiza. Sólo añadir Mapeo de datos definidos de acuerdo con la estructura.
Al agregar un nuevo campo de datos, lanza inmediatamente una excepción:
Identificación Automática Fecha Tipo
En lo anterior, cuando el conjunto dinámico de verdad, añadir un nuevo campo de datos se actualiza la cartografía reconoce automáticamente el tipo de tipo, fecha si lo es, entonces podemos especificar el tipo de identificación.
La persona designada dynamic_date_formats formato:
PUT person/_mapping
{
"dynamic_date_formats": ["yyyy/MM/dd"]
}
Aquí puede especificar el formato de hora múltiple.
Añadir nuevos datos a una persona, que son hoy y FirstDate:
PUT person/_doc/2
{
"today": "2020-01-15",
"firstDate": "2020/01/15"
}
Agregar asignación de los nuevos datos de campo:
Debido a lo anterior que especificar el formato de la hora yyyy/MM/dd
en que el tiempo se reconoce como un formato, por lo que hoy es el campo de yyyy-MM-dd
formato no es reconocido como un tipo de tiempo, condenado a escribir texto.
Multi-Field
Mapeo se puede definir campos múltiples propiedades de campo para satisfacer conseguir diferentes escenarios. Por ejemplo address
definido text
tipo, que han definido campos keyword
tipo, donde el uso principal es diferente para distinguir entre dos escenarios diferentes.
text
Crea índice de palabras invertida para la búsqueda de texto completo.keyword
No crea un índice invertido palabra para la clasificación y agregación.
Adición de datos:
# 向 person 中添加数据
PUT person/_doc/1
{
"uId": 1,
"name": "ytao",
"age": 18,
"address": "广东省珠海市",
"birthday": "2020-01-15T12:00:00Z",
"money": 108.2,
"isStrong": true
}
Consulta address
de datos.
Consulta address.keyword
de datos.
Por keyword
la recuperación, ya que el índice no crea una palabra, y no llegó a los datos.
Índice de Control
El uso en el campo de índice para especificar el campo actual si el índice puede ser buscado. Especificar el tipo booleano tipo, falso como que no busque, es cierto que se debe buscar.
Eliminar asignación antes:
DELETE person
La creación de Cartografía, establezca la name
propiedad index
en false.
Después de añadir los datos anteriores de nuevo la búsqueda name
de campo:
Después de que el campo de índice se establece falso, porque no hay un índice, por lo que la búsqueda no puede llegar al índice.
manejo nula
Ahora añadir una dirección de datos vacía a la Elasticsearch en:
PUT person/_doc/2
{
"uId": 2,
"name": "Jack",
"age": 22,
"address": null,
"birthday": "2020-01-15T12:00:00Z",
"money": 68.7,
"isStrong": true
}
Buscar address.keyword está vacía de los datos:
Búsqueda devuelve una excepción, el valor por defecto no se le permite buscar nula.
Es necesario especificar la asignación de null_value propiedad, y no puede text
declarar tipos.
Buscar address.keyword está vacía de los datos:
Set "null_value": "NULL"
, el proceso de búsqueda puede ser nulo.
La polimerización de una pluralidad de campos
Polimerizados en una pluralidad de campos de índice utilizando copy_to polimerización. Por ejemplo, nosotros en las consultas de varios campos, no se requiere a la selección de filtro para cada campo, sólo para el campo de la polimerización.
En uso copy_to, se polimeriza especificando el nombre.
De hecho, copy_to no añada un nombre usando un formato de matriz, se convierte automáticamente en el formato de datos.
La adición de dos datos de búsqueda que ser verificados:
# 向 person 中添加数据
PUT person/_doc/1
{
"uId": 1,
"name": "ytao",
"age": 18,
"address": "广东省珠海市",
"birthday": "2020-01-15T12:00:00Z",
"money": 108.2,
"isStrong": true
}
PUT person/_doc/2
{
"uId": 2,
"name": "杨广东",
"age": 22,
"address": null,
"birthday": "2020-01-15T12:00:00Z",
"money": 68.7,
"isStrong": true
}
Consulta full_name
de valor, volverá nombre y la dirección de los valores de los objetos asociados.
Volver a ver los resultados, _source en el campo no tiene un aumento correspondiente en los nombres de campo copy_to, por lo copy_to solamente copiar el contenido de campo para el índice, y no va a cambiar el campo contiene desde arriba.
resumen
Mapeo creado por los documentos de papel habituales y funcionamiento práctico de la presentación, pero también puede dominar estos el uso diario básico. Aprender las funciones de mapeo operan, creo que el diseño de la tienda también ayuda.