Sobre el funcionamiento básico del documento

Sobre el funcionamiento básico del documento

Operación básica

agregando datos

PUT /latte2/user/1
{
    
    
  "name":"latte",
  "age": 23,
  "desc": "干",
  "tags":["技术","海贼王"]
}
PUT /latte2/user/2
{
    
    
  "name": "张三",
  "age": 28,
  "desc": "法外狂徒",
  "tags": ["旅游", "渣男", "交友"]
}

PUT /latte2/user/3
{
    
    
  "name": "李四",
  "age": 30,
  "desc": "不知道怎么描述",
  "tags": ["旅游", "男", "唱歌"]
}

GET latte2/user/1


GET latte2/user/_search?q=name:latte

Inserte la descripción de la imagen aquí

Obtener datos OBTENER

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Actualizar datos PUT

Inserte la descripción de la imagen aquí
Si los campos de colocación están incompletos, los campos originales se descartarán y la colocación es una operación de sobrescritura.

Publicar _update, se recomienda este método de actualización.

Use POST sin agregar _update

Inserte la descripción de la imagen aquí

Los demás campos que no se hayan enviado se dejarán en blanco y luego se agregará un nuevo campo de nombre de documento.

Inserte la descripción de la imagen aquí

Utilice POST seguido de _update

Inserte la descripción de la imagen aquí

El valor del campo enviado se ha actualizado y el campo no enviado todavía tiene el valor original.

Inserte la descripción de la imagen aquí

Simplemente busque

GET latte2/user/1

¡La consulta condicional de respuesta corta puede generar una consulta básica de acuerdo con las reglas de mapeo predeterminadas!

Inserte la descripción de la imagen aquí
Pesos

Búsqueda de operaciones complejas

seleccionar (ordenar, paginar, resaltar, consulta difusa, consulta precisa!)

# 模糊查询
GET latte2/user/_search
{
  "query": {
    "match": {
      "name": "latte2"
    }
  }
}

# 对查询结果进行字段过滤
GET latte2/user/_search
{
  "query": {
    "match": {
      "name": "latte2"
    }
  },
  "_source": ["name", "desc"]
}

# 排序
GET latte2/user/_search
{
  "query": {
    "match": {
      "name": "latte2"
    }
  },
  "sort":[{
    "age": "asc"
  }]
}

第二种写法
GET latte2/user/_search
{
  "query": {
    "match": {
      "name": "latte2"
    }
  },
  "sort": [
    {
      "age": {
        "order": "asc"
      }
    }
  ]
}

# 分页
GET latte2/user/_search
{
  "query": {
    "match": {
      "name": "latte2"
    }
  },
  "sort":[{
    "age": "asc"
  }], 
  "from": 0,
  "size": 2
}

Inserte la descripción de la imagen aquí

hit de estructura json : índice e información del documento. El número total de consultas, y luego los documentos específicos que se consultan. Se puede recorrer todo en los datos. Puntaje: Podemos juzgar quién está más en línea con el resultado.

Resultados de salida, ¡no quiero tanto!
Inserte la descripción de la imagen aquí

Después de usar Java para operar, ¡todos los métodos y objetos son las claves internas!

¡Clasificar!

Inserte la descripción de la imagen aquí

Consulta de paginación!

Inserte la descripción de la imagen aquí

El subíndice de datos todavía comienza desde 0, que es lo mismo que todas las estructuras de datos aprendidas.

/ search / {current} / {pageize}

Consulta booleana

# 多条件查询 must 相当于and
GET latte2/user/_search
{
  "query": {
    "bool": {
      "must": [
        {"match": {
          "name": "latte2"
        }},
        {"match": {
          "age": 23
        }}
      ]
    }
  }
}

# 多条件查询 should 相当于or
GET latte2/user/_search
{
  "query": {
    "bool": {
      "should": [
        {"match": {
          "name": "latte2"
        }},
        {"match": {
          "age": 25
        }}
      ]
    }
  }
}

# 多条件查询 must_not 相当于 not
GET latte2/user/_search
{
  "query": {
    "bool": {
      "must_not": [
        {"match": {
          "age": 25
        }}
      ]
    }
  }
}


# 过滤查询1 age > 27
GET latte2/user/_search
{
  "query": {
    "bool": {
      "must": [
        {"match": {
          "name": "latte2"
        }}
      ],
      "filter": [
        {"range": {
          "age": {
            "gt": 27
          }
        }}
      ]
    }
  }
}

# 过滤器2  22<age<30 
GET latte2/user/_search
{
  "query": {
    "bool": {
      "must": [
        {"match": {
          "name": "latte2"
        }}
      ],
      "filter": [
        {"range": {
          "age": {
            "lt": 30,
            "gt": 22
          }
        }}
      ]
    }
  }
}
GET latte2/user/_search
{
  "query": {
    "match": {
      "tags": "技术 男"
    }
  }
}

must (y) , todas las condiciones deben cumplir donde id = 1 y name = xxx

Inserte la descripción de la imagen aquí

debería (o) , todas las condiciones deben cumplir donde id = 1 o nombre = xxx

Inserte la descripción de la imagen aquí

must_not (not)

Inserte la descripción de la imagen aquí

Filtrar

Inserte la descripción de la imagen aquí

  • gt es mayor que
  • gte es mayor o igual que
  • es menos que
  • lte es menor o igual que!

Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquí

¡Combina múltiples condiciones!

Inserte la descripción de la imagen aquí

Consulta precisa!

# 定义类型term: 精确匹配
PUT latte3
{
  "mappings": {
    "properties": {
      "name": {
        "type": "text"
      },
      "desc": {
        "type": "keyword"
      }
    }
  }
}

PUT /latte3/_doc/1
{
  "name":"latte3",
  "desc":"latte3 desc"
}

PUT /latte3/_doc/2
{
  "name":"latte3",
  "desc":"desc 2"
}

# 按照keyword类型精准匹配
GET latte3/_search
{
  "query": {
    "term": {
      "desc": {
        "value": "desc 2"
      }
    }
  }
}
# 结果:
{
  "took" : 174,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 1,
      "relation" : "eq"
    },
    "max_score" : 0.6931471,
    "hits" : [
      {
        "_index" : "latte3",
        "_type" : "_doc",
        "_id" : "2",
        "_score" : 0.6931471,
        "_source" : {
          "name" : "latte3",
          "desc" : "desc 2"
        }
      }
    ]
  }
}


# 按照text类型匹配
GET latte3/_search
{
  "query": {
    "term": {
      "name":"latte3"
    }
  }
# 结果:
{
  "took" : 0,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 2,
      "relation" : "eq"
    },
    "max_score" : 0.18232156,
    "hits" : [
      {
        "_index" : "latte3",
        "_type" : "_doc",
        "_id" : "1",
        "_score" : 0.18232156,
        "_source" : {
          "name" : "latte3",
          "desc" : "latte3 desc"
        }
      },
      {
        "_index" : "latte3",
        "_type" : "_doc",
        "_id" : "2",
        "_score" : 0.18232156,
        "_source" : {
          "name" : "latte3",
          "desc" : "desc 2"
        }
      }
    ]
  }
}
多个值匹配精确查询
PUT /latte3/_doc/3
{
  "t1":"22",
  "t2":"2021-03-13"
}

PUT /latte3/_doc/4
{
  "t1": "33",
  "t2": "2021-03-13"
}

GET /latte3/_search
{
  "query": {
   "bool": {
     "should": [
       {
         "term": {
           "t1": "22"
         }
       },{
         "term": {
           "t1": "33"
         }
       }
     ]
   }
  }
}
高亮
GET latte2/user/_search
{
  "query": {
    "match": {
      "name": "latte2"
    }
  },
  "highlight": {
    "pre_tags": "<p class='key' style='color:red'>",
    "post_tags": "</p>", 
    "fields": {
      "name": {}
    }
  }
}

# 结果显示:
#! Deprecation: [types removal] Specifying types in search requests is deprecated.
{
  "took" : 148,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 2,
      "relation" : "eq"
    },
    "max_score" : 0.8405091,
    "hits" : [
      {
        "_index" : "latte2",
        "_type" : "user",
        "_id" : "1",
        "_score" : 0.8405091,
        "_source" : {
          "doc" : {
            "name" : "latte2"
          },
          "name" : "latte2"
        },
        "highlight" : {
          "name" : [
            "<p class='key' style='color:red'>latte2</p>"
          ]
        }
      },
      {
        "_index" : "latte2",
        "_type" : "user",
        "_id" : "2",
        "_score" : 0.8405091,
        "_source" : {
          "name" : "latte2",
          "age" : 28,
          "desc" : "法外狂徒",
          "tags" : [
            "旅游",
            "渣男",
            "交友"
          ]
        },
        "highlight" : {
          "name" : [
            "<p class='key' style='color:red'>latte2</p>"
          ]
        }
      }
    ]
  }
}

El término consulta se busca directamente a través del proceso de término especificado por el índice invertido.

Sobre el participio:

  • término, consulta directamente el exacto
  • match, usará el tokenizador para analizar! (¡Analice el documento primero y luego consulte el documento analizado!)

Dos tipos text keyword(el tipo de texto se segmentará, el tipo de palabra clave no se segmentará)

Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquí

Varios valores coinciden con la consulta exacta

Inserte la descripción de la imagen aquí

Resaltar consulta!

Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_43803285/article/details/114803961
Recomendado
Clasificación