Uso simple de elasticsearch

¿Cómo realiza elasticsearch la adición, eliminación, modificación y otras operaciones simples como MySQL?

incrementar

customer即为索引(对应MySQL数据库)
external为类型(对应MySQL数据库数据库中的表)
1为id(数据库表中的id)
//put
http://192.168.56.10:9200/customer/external/1

Como se muestra en la figura, la solicitud de colocación, cuando lleva la identificación, inicia una solicitud varias veces, sobrescribirá el valor de identificación anterior y, después de que se inicien varias solicitudes, el número de versión _version seguirá superponiéndose;
Inserte la descripción de la imagen aquí

//POST请求
http://192.168.56.10:9200/customer/external/

Como se muestra en la figura, cuando se ha publicado la solicitud, si no se especifica la identificación, se generará automáticamente la identificación para nosotros.
Inserte la descripción de la imagen aquí

Eliminar

//delete请求
http://192.168.56.10:9200/customer/external/1

cambio

Colocar solicitud o solicitud posterior
Modificación de bloqueo optimista:
cada vez que se modifica, _seq_no se superpondrá automáticamente, lo que hará que otras solicitudes vuelvan a verificar _seq_no, obtengan el _seq_no correcto y luego completen la modificación
_primary_term: el fragmento primario se redistribuye, como reiniciar Cambiará

//put请求
http://192.168.56.10:9200/customer/external/1?_seq_no=1&if_primary_term=1

Si trae _update para modificar el cuerpo principal, debe traer doc . La diferencia entre los dos métodos de escritura es: el que tiene DOC determinará primero si el contenido de los datos es consistente con el contenido modificado. Si es consistente, no se realizará la operación ( con los datos originales). Para comparación )

//post请求
POST customer/external/1/_update
{
    
    
	"doc":
	{
    
    "name":"zhangsan"}
	
}
//而这种不会对比原来数据,直接发请求修改
POST customer/external/1
{
    
    
	{
    
    "name":"zhangsan"}
	
}

controlar

//get请求
http://192.168.56.10:9200/customer/external/1

Operación por lotes

POST /customer/external/_bulk
{
    
    "index":{
    
    "_id":"1"}}
{
    
    "name":"John Don"}
{
    
    "index":{
    
    "_id":"2"}}
{
    
    "name":"John Don"}

tomó: el mundo pasó para realizar estas operaciones
errores: falso, todas estas operaciones fueron
elementos exitosos : el estado de ejecución de cada registro
Inserte la descripción de la imagen aquí

Búsqueda Avanzada

ES admite 2 formas de búsqueda

  • Enviar parámetros de búsqueda a través de la URL de solicitud REST (URL + parámetros de búsqueda)
  • A través del cuerpo de la solicitud REST (url + cuerpo de la solicitud)
  1. URL de solicitud de REST Enviar parámetros de búsqueda (URL + parámetros de búsqueda)
//q=*: 查询bank索引下的所有数据
//sort=account_number:asc查出数据按照account_number进行升序拍列
GET /bank/_search?q=*&sort=account_number:asc
  • _shards: explica qué hace cada fragmento para la recuperación en el caso de un clúster
  • hits: el registro del hit. El resultado de la consulta

Inserte la descripción de la imagen aquí
Documento oficial de ES Para conocer la
función específica de cada atributo, consulte los
datos de prueba del documento oficial . ¡Los
siguientes códigos se basan en datos de prueba!
2. Cuerpo de solicitud REST (url + cuerpo de solicitud)

//query:查询条件
//sort:排序条件 
GET /bank/_search
{
    
    
  "query": {
    
     "match_all": {
    
    } },
  "sort": [
    {
    
     
    	"account_number": "asc" 
    },
     {
    
    
      "balance": "desc"
    }
  ],
   "from": 10,//从第10条记录开始查询
  "size": 10,//查10条记录
  "_source": ["balance","firstname"]//返回的字段
}
  1. Coincidencia de búsqueda (coincidencia)
    de búsqueda de texto completo con coincidencia, búsqueda de no texto completo con término
//精确查询
GET /bank/_search
{
    
    
  "query": {
    
    
    "match": {
    
    
      "account_number": "20"
    }
  }
}
//模糊查询
{
    
    
  "query": {
    
    
    "match": {
    
    
      "address": "mill lane"//字符串
      //"address.keyword": "mill lane"精确匹配
    }
  }
}

Después de usar la coincidencia, podemos ver que el atributo de puntuación máxima tiene valor. Cuando se realiza una
Consulta difusa
consulta difusa, la puntuación es diferente. Los resultados de la consulta también se ordenarán de mayor a menor.

  1. Consulta de coincidencia (coincidencia de frase match_phrase)
GET /bank/_search
{
    
    
  "query": {
    
    
  //match_phrase:将mill lane看做一个单词进行匹配
    "match_phrase": {
    
    
      "address": "mill lane"
    }
  }
}
  1. Coincidencia de varios campos
//查询"address","city"中包含"mill"的记录
GET /bank/_search
{
    
    
  "query": {
    
    
    "multi_match": {
    
    
      "query": "mill",
      "fields": ["address","city"]
    }
  }
}
  1. Consulta compuesta
GET /bank/_search
{
    
    
  "query": {
    
    
    "bool": {
    
    
      "must": [
        {
    
     "match": {
    
     "age": "40" } }
      ],
      "must_not": [
        {
    
     "match": {
    
     "state": "ID" } }
      ]
    }
  }
}

¡El filtro es similar a la coincidencia, pero el filtro no superpone puntuaciones de relevancia! Para
consultas más avanzadas, consulte la documentación oficial de ES

Supongo que te gusta

Origin blog.csdn.net/lq1759336950/article/details/114450388
Recomendado
Clasificación