formato de datos 1.document
El análisis del motor de búsqueda orientada a documentos
- Estructura de datos del sistema de aplicación es un orientado a objetos, complejo
- datos de objetos almacenados en la base de datos, sólo para desmantelar, se convierte en planos múltiples mesas, cada vez que la consulta tuvo que volver a formato de objeto, engorroso
- ES es una estructura de datos orientado a documento almacenado en el documento, la estructura de datos orientado a objetos es el mismo, los datos del documento en base a esta estructura, ES proporcionan indexación sofisticado, recuperación de texto completo, análisis y otras funciones de polimerización
- es JSON formato de datos de un documento para expresar
- La diferencia entre una base de datos almacenada
por ejemplo, ahora tiene una plantilla de clase, el personal incluido en su departamento
public class Employee {
private String id;
private String email;
private String name;
private Department department ;
}
private class Department {
private String id;
private String name;
}
Dos tablas: los empleados, mesa de departamento,
las tiendas de base de datos: los datos del objeto empleado para volver a abrir, y los datos del empleado en el Departamento de datos
tabla de empleados: ID, correo electrónico, nombre, apellidos 3 campos
de mesa Departamento: Identificación, nombre , dos campos
de datos almacenados formato JSON directamente en la memoria elastcsearch
{
"id":1
"email": "[email protected]",
"name": "zhangsan",
"department": {
"id": 2,
"name": "研发"
}
}
Somos conscientes de la diferencia entre formatos de datos relacionales es de los formatos de datos de documentos y bases de datos
2.elasticsearch operación de clúster sencillo
ES proporciona un conjunto de API, llamada a la API gato, ES se pueden ver en una variedad de datos
- Una revisión rápida del grupo de salud (GET / _cat / salud? V)
época | fecha y hora | racimo | estado | node.total | node.data | fragmentos | en | reloj | en eso | desasignar | tareas pendientes | max_task_wait_time | active_shards_percent |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1553323665 | 14:47:45 | elasticsearch | amarillo | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 0 | - | 50% |
¿Cómo entender rápidamente el estado de salud de la agrupación? Mirada de estado
verde: Cada índice del fragmento primario y un fragmento de réplica es el estado activo de
color amarillo: Cada índice del fragmento primario es el estado activo, pero algunos fragmento de réplica no es estado activo, en un estado inutilizable de
rojo: No todo el índice el fragmento primario es el estado activo, parte de los datos de índice se pierde
¿Por qué ahora en un estado de color amarillo?
Ahora estamos en un ordenador portátil, se inició un proceso es, el equivalente a un solo nodo. ES ahora tienen un índice, es Kibana propio índice construido establecida. Puesto que la configuración predeterminada se asigna fragmento primario 5 y 5 para cada índice fragmento de réplica, y fragmento primario y fragmento de réplica no puede estar en la misma máquina (para tolerancia a fallos). Ahora índice Kibana para establecer su propia es un fragmento primario y un fragmento de réplica. Actualmente en un nodo, por lo que sólo un fragmento primario está asignado y activado, pero no un fragmento de réplica para iniciar la segunda máquina.
A continuación, sólo iniciar el segundo proceso es, una copia elasticsearch empezar, habrá dos nodos en el racimo es, y que un fragmento de réplica se asigna automáticamente en el pasado, y luego del estado del clúster se convierte en estado verde.
época | fecha y hora | racimo | estado | node.total | node.data | fragmentos | en | reloj | en eso | desasignar | tareas pendientes | max_task_wait_time | active_shards_percent |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1553324486 | 15:01:26 | elasticsearch | verde | 2 | 2 | 2 | 1 | 0 | 0 | 0 | 0 | - | 100% |
- Para ver rápidamente qué índice (GET / _cat / índices? V) hay un grupo
salud | estado | índice | uuid | en | reps | docs.count | docs.deleted | store.size | ri.store.size |
---|---|---|---|---|---|---|---|---|---|
amarillo | abierto | .kibana | rUm9n9wMRQCCrRDEhqneBg | 1 | 1 | 1 | 0 | 3.1kb | 3.1kb |
-
La operación simple de indexación
- Crear un índice: PUT / test_index
{ "acknowledged": true, "shards_acknowledged": true }
Ver índice:
salud estado índice uuid en reps docs.count docs.deleted store.size pri.store.size amarillo abierto test_index XmS9DTAtSkSZSwWhhGEKkQ 5 1 0 0 650b 650b amarillo abierto .kibana rUm9n9wMRQCCrRDEhqneBg 1 1 1 0 3.1kb 3.1kb - Índice Borrar: borrar / test_index bonita?
{ "acknowledged": true }
Ver índice:
alud estado índice uuid en reps docs.count docs.deleted store.size pri.store.size ellow abierto .kibana rUm9n9wMRQCCrRDEhqneBg 1 1 1 0 3.1kb 3.1kb
3.elasticsearch 的 CRUD
- Nuevo producto: Nuevos documentos, indexación
sintaxis:
PUT /index/type/id
{
"json数据"
}
例子
PUT /ecommerce/product/1
{
"name" : "gaolujie yagao",
"desc" : "gaoxiao meibai",
"price" : 30,
"producer" : "gaolujie producer",
"tags": [ "meibai", "fangzhu" ]
}
return resultado:
{
"_index": "ecommerce",
"_type": "product",
"_id": "1",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"created": true
}
ES creará automáticamente índice y escribir, sin necesidad de crear de antemano, y el ES defecto documentarán cada campo se construyen índice invertido, de modo que pudiera ser buscado
- Las consultas Productos: recuperar documentos
sintaxis:
GET /index/type/id
Por ejemplo:
GET /ecommerce/product/1
return resultado:
{
"_index": "ecommerce",
"_type": "product",
"_id": "1",
"_version": 1,
"found": true,
"_source": { //_source是返回的数据
"name": "gaolujie yagao",
"desc": "gaoxiao meibai",
"price": 30,
"producer": "gaolujie producer",
"tags": [
"meibai",
"fangzhu"
]
}
}
- modificación
- Reemplazar (sobrescribir) el mismo id sobrescribirá la información anterior en
PUT /ecommerce/product/1
{
"name" : "jiaqiangban gaolujie yagao",
"desc" : "gaoxiao meibai",
"price" : 30,
"producer" : "gaolujie producer",
"tags": [ "meibai", "fangzhu" ]
}
{
"_index": "ecommerce",
"_type": "product",
"_id": "1",
"_version": 2,
"result": "updated",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"created": false
}
No es una alternativa buena, incluso si tiene que llevar todo el campo, con el fin de modificar la información, de lo contrario, almacenar parte de la información con otra pérdida de datos
- Modificar las mercancías: Documento actualizado
sintaxis:
POST /index/type/id/_update
Por ejemplo:
POST /ecommerce/product/1/_update
{
"doc": {
"name": "jiaqiangban gaolujie yagao"
}
}
{
"_index": "ecommerce",
"_type": "product",
"_id": "1",
"_version": 8,
"result": "updated",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
}
}
- Quitar elementos: Eliminar el documento
sintaxis:
DELETE /index/type/id
Por ejemplo:
DELETE /ecommerce/product/1
Volver a los resultados
{
"found": true,
"_index": "ecommerce",
"_type": "product",
"_id": "1",
"_version": 9,
"result": "deleted",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
}
}