Uso simples de elasticsearch

Como o elasticsearch executa adição, exclusão, modificação e outras operações simples como o MySQL?

aumentar

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

Conforme mostrado na figura, a solicitação put, ao carregar o id, inicia uma solicitação várias vezes, substituirá o valor do id anterior e, após várias solicitações serem iniciadas, o número da versão _version continuará a se sobrepor;
Insira a descrição da imagem aqui

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

Conforme mostrado na figura, quando a solicitação for postada, se o id não for especificado, ele irá gerar automaticamente o id para nós
Insira a descrição da imagem aqui

excluir

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

mudança

Put request ou post request
Modificação de bloqueio otimista:
toda vez que for modificado, _seq_no será automaticamente sobreposto, fazendo com que outras solicitações verifiquem _seq_no novamente, obtenham o _seq_no correto e concluam a modificação
_primary_term: o fragmento primário é redistribuído, como reiniciar Vai mudar

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

Se você trouxer _update para modificar o corpo principal, você deve trazer um documento . A diferença entre os dois métodos de escrita é: aquele com DOC irá primeiro determinar se o conteúdo dos dados é consistente com o conteúdo modificado. Se for consistente, não operação será realizada ( com os dados originais). Para comparação )

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

Verifica

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

Operação em lote

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

levou: o mundo gastou para realizar esses
erros de operações : falso, todas essas operações foram
itens de sucesso : o status de execução de cada registro
Insira a descrição da imagem aqui

Busca Avançada

ES oferece suporte a 2 maneiras de pesquisar

  • Enviar parâmetros de pesquisa por meio de url de solicitação REST (url + parâmetros de pesquisa)
  • Por meio do corpo da solicitação REST (url + corpo da solicitação)
  1. URL de solicitação REST Enviar parâmetros de pesquisa (url + parâmetros de pesquisa)
//q=*: 查询bank索引下的所有数据
//sort=account_number:asc查出数据按照account_number进行升序拍列
GET /bank/_search?q=*&sort=account_number:asc
  • _shards: Explique o que cada fragmento faz para recuperação no caso de um cluster
  • hits: o registro do hit. O resultado da consulta

Insira a descrição da imagem aqui
Documento oficial ES Para a
função específica de cada atributo, consulte os
dados de teste do documento oficial . Os
códigos a seguir são baseados em dados de teste!
2. Corpo da solicitação REST (url + corpo da solicitação)

//query:查询条件
//sort:排序条件 
GET /bank/_search
{
    
    
  "query": {
    
     "match_all": {
    
    } },
  "sort": [
    {
    
     
    	"account_number": "asc" 
    },
     {
    
    
      "balance": "desc"
    }
  ],
   "from": 10,//从第10条记录开始查询
  "size": 10,//查10条记录
  "_source": ["balance","firstname"]//返回的字段
}
  1. Corresponder consulta (correspondência)
    pesquisa de texto completo com correspondência, pesquisa de texto não completo com termo
//精确查询
GET /bank/_search
{
    
    
  "query": {
    
    
    "match": {
    
    
      "account_number": "20"
    }
  }
}
//模糊查询
{
    
    
  "query": {
    
    
    "match": {
    
    
      "address": "mill lane"//字符串
      //"address.keyword": "mill lane"精确匹配
    }
  }
}

Depois de usar a correspondência, podemos ver que o atributo de pontuação máxima tem valor! Quando
Consulta difusa
a consulta difusa, a pontuação é diferente! Os resultados da consulta também serão classificados de alto a baixo.

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

O filtro é semelhante à correspondência, mas o filtro não sobrepõe as pontuações de relevância! Para
consultas mais avançadas, consulte a documentação oficial do ES

Acho que você gosta

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