La operación de mapeo utiliza Elasticsearch

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 truelos 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 strictla 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 addressde datos.

Consulta address.keywordde datos.

Por keywordla 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 namepropiedad  index en false.

Después de añadir los datos anteriores de nuevo la búsqueda namede 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 textdeclarar 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.

Publicados 467 artículos originales · ganado elogios 215 · vistas 190 000 +

Supongo que te gusta

Origin blog.csdn.net/qq_44868502/article/details/104998405
Recomendado
Clasificación