1. Conceptos básicos
Elasticsearch también es una biblioteca de búsqueda de texto completo basada en Lucene, y su esencia es almacenar datos.Muchos conceptos son similares a MySQL.
Relación de comparación:
Índice (índices) ---------------------Bases de datos
Tipo de base de datos (tipo) ------------------ - -------Tabla de datos tabla [7.x obsoleta]
documento (Documento)-------------Fila fila
campo (Campo)- - -----------------------Columna de columnas
Cabe señalar que Elasticsearch en sí está distribuido, por lo que incluso si solo tiene un nodo, Elasticsearch realizará operaciones de fragmentación y copia en sus datos de forma predeterminada. Cuando agrega nuevos datos al clúster, los datos también estarán en el nuevo agregado. Los nodos están equilibrados.
2. Operación de índice
1. Índice de consulta
Verifique qué bibliotecas de índices están disponibles en es (similar a la base de datos mysql) : GET /_cat/indices?v
# es默认对中文的分词 支持不友好,它认为一个字代表一个词
# 查看es的分词方式
GET _analyze
{
"text": ["我是中国人"]
}
{
"text": "我爱你你爱我"
}
# 给es配置中文分词器:ik分词器
# 指定ik分词器分词:ik_smart粗粒度分词
# ik_max_word细粒度分词
GET _analyze
{
"text": "咖喱人,鸡你太美,你这个老六",
"analyzer": "ik_max_word"
}
Habrá un índice llamado .kibana y .kibana_task_manager por defecto en es
nombre del campo | Significado |
---|---|
salud | verde (grupo completo) amarillo (punto único normal, grupo incompleto) rojo (un solo punto no es normal) |
estado | se puede usar |
índice | nombre de índice |
uuid | índice de número uniforme |
en | cuantos nodos maestros |
reps | ¿Cuántos nodos esclavos? |
docs.count | número de documentos |
docs.borrado | Cuántos documentos se eliminaron |
tienda.tamaño | Huella general |
pri.store.size | El nodo maestro representa |
2. Crea un índice
PUT /nombreíndice
Parámetros opcionales: especifique el fragmento y la copia, el fragmento predeterminado es 3 y la copia es 2.
PUT /liush
{
"settings": {
"number_of_shards": 2,
"number_of_replicas": 3
}
}
3. Ver la información específica del índice
GET /nombreíndice
4. Eliminar el índice
DELETE /nombre de biblioteca de índice
3. Configuración de mapeo (_mapping)
Con el índice, el siguiente paso es agregar datos. Sin embargo, la asignación debe definirse antes de que se puedan agregar datos.
¿Qué es un mapeo?
El mapeo es el proceso de definir un documento, qué campos contiene el documento, si estos campos están guardados, indexados, segmentados por palabras, etc.
Solo cuando la configuración es clara, Elasticsearch nos ayudará a crear la biblioteca de índices (no necesariamente)
1. Crear un campo de mapeo
PUT /nombre de biblioteca de índice/_mapping
{ "propiedades": { "nombre de campo": { "tipo": "tipo", "índice": verdadero, "almacenar": verdadero, "analizador": "separador de palabras" } } }
Nombre del campo: similar al nombre de la columna, se pueden especificar muchos campos en las propiedades.
Cada campo puede tener muchos atributos. Por ejemplo:
tipo:类型,Cadena(texto palabra clave) Numérico(entero largo flotante doble) fecha booleana
índice: si indexar, el valor predeterminado es verdadero
almacenar: si almacenar, el valor predeterminado es falso, incluso si es falso, se almacenará en _source, si es verdadero, se almacenará una copia adicional
analizador: separador de palabras, aquí use ik separador de palabras: o
ik_max_word
ik_smart
PUT /liush
{
"settings": {
"number_of_shards": 2,
"number_of_replicas": 3
}
}
POST /liush/_mapping
{
"properties": {
"title": {
"type": "text",
"analyzer": "ik_max_word"
},
"images":{
"type": "keyword",
"index": "false"
},
"price": {
"type": "long"
}
}
}
2. Ver la relación de mapeo
Sintaxis: GET /nombre de biblioteca de índice/_mapping
4. Nuevo documento (documento)
Con índices, tipos y asignaciones, puede agregar, eliminar, modificar y consultar documentos.
1. Jugabilidad básica
Si queremos especificar el id cuando lo agregamos nosotros mismos, podemos hacer esto:
POST /nombre de biblioteca de índice/_doc/valor de id
{ ... }
POST /liush/_doc/1
{
"title": "小米手机",
"images": "http://xiaomi.com/xiaomi.igp",
"price":2999
}
GET /liush/_search
2. Juicio inteligente
De hecho, Elasticsearch es muy inteligente. No necesita establecer ninguna asignación para la biblioteca de índices. También puede juzgar el tipo de acuerdo con los datos que ingresa y agregar dinámicamente asignaciones de datos.
POST /liush/_doc/2
{
"title":"小米手机",
"images":"http://image.jd.com/12479122.jpg",
"price":2899,
"stock": 200,
"saleable":true,
"attr": {
"category": "手机",
"brand": "小米"
}
}
Además, agregamos varios campos de inventario de existencias, si el vendible está en los estantes y otros atributos de attr.
stock, vendible y attr se han mapeado correctamente.
Si son datos de tipo cadena, se agregarán dos tipos: texto + palabra clave. Como en el ejemplo anterior categoría y marca
5. Eliminar datos
La eliminación utiliza la solicitud DELETE. Del mismo modo, debe eliminarse de acuerdo con la identificación:
Sintaxis: DELETE /nombre de biblioteca de índice/_doc/valor de id
Ejemplo: DELETE /liush/_doc/2
6. Actualizar documentos
Sintaxis:
POST /nombre de biblioteca de índice/_actualización/valor de id
{ doc:{ "atributo":"valor" } }
POST /liush/_update/1
{
"doc": {
"title":"aaa"
}
}