consultas de profundidad y consulta por lotes
la profundidad de paginación
En la paginación consulta, uso y consulta tamaño y palabras clave desde el mismo nivel. Pero cuando se inicia a partir de 9999 ya partir del tamaño 10 es el tiempo sin duda se quejará.
Porque hay una max_result_window controla los parámetros, el valor predeterminado es 10000. Si su empresa tiene que ser ultra profundas esas consultas, se puede modificar este valor
GET /shop/_settings # 用于查询相关的设置
PUT /shop/_settings # 设置相关参数
{
"index.max_result_window": "20000"
}
Por supuesto, también se puede usar el desplazamiento de desplazamiento buscar, ahorrando tiempo y fijar el ancla
- desplazamiento = 1 m, el equivalente de la sesión es un tiempo de la sesión, la celebración contexto de búsqueda de tiempo es de 1 minuto.
POST /shop/_search?scroll=1m
{
"query": {
"match_all": {
}
},
"sort" : ["_doc"],
"size": 5
}
# 上面的返回值会有一个_scroll_id的属性,将其copy
POST /_search/scroll
{
"scroll": "1m",
"scroll_id" : "your last scroll_id" # 贴在这个点发
}
Las operaciones por lotes
consulta por lotes _mget
# 之前的多id查询是这样的,这种是检索类的查询将返回相关的max_score和hint等元数据
POST /shop/_doc/_search
{
"query":{
"ids":{
"type":"_doc",
"values":["1001","1002","1003"]
}
}
}
# 但是_mget这个就是返回一个个doc,并且如果没有存在要查询的id时,也会显示一个json对象,里面有个属性是found会显示false,而有的id的found就是true
POST /shop/_doc/_mget
{
"ids":["1001","1002","1003"]
}
la operación por lotes a granel
y el estilo de entrada convencional es un poco diferente. No a formato JSON, el coche tendrá que cortar cada línea (incluyendo la última línea debe ser auto)
{ action: { metadata }}\n
{ request body }\n
{ action: { metadata }}\n
{ request body }\n
...
{ action: { metadata }}
Tipo representa una operación por lotes, se puede añadir, eliminar o modificar\n
Está al final de cada línea debe llenar un pliego de condiciones, incluyendo cada fila de la última línea debe escribir para el ES analíticos{ request body }
Está solicitando cuerpo, adiciones y modificaciones a las necesidades operativas, que no es necesario eliminar la operación
acción debe ser una de las siguientes opciones:
- crear: Si no existe el documento, crear. No hay error. error anormal no afecta a otras operaciones.
- Índice: crear un nuevo documento o reemplazar un documento existente.
- actualización actualiza una parte del documento.
- Eliminar: eliminar un documento.
crear nuevos documentos
POST /_bulk
{"create": {"_index": "shop2", "_type": "_doc", "_id": "2001"}}
{"id": "2001", "nickname": "name2001"}
{"create": {"_index": "shop2", "_type": "_doc", "_id": "2002"}}
{"id": "2002", "nickname": "name2002"}
{"create": {"_index": "shop2", "_type": "_doc", "_id": "2003"}}
{"id": "2003", "nickname": "name2003"}
# 也可以将index和type写在url上面
POST /shop/_doc/_bulk
{"create": {"_id": "2003"}}
{"id": "2003", "nickname": "name2003"}
{"create": {"_id": "2004"}}
{"id": "2004", "nickname": "name2004"}
{"create": {"_id": "2005"}}
{"id": "2005", "nickname": "name2005"}
Índice crear o sobrescribir el documento original
# 有就更新,没有就创建。而create的话,有就报错
POST /shop/_doc/_bulk
{"index": {"_id": "2004"}}
{"id": "2004", "nickname": "index2004"}
{"index": {"_id": "2007"}}
{"id": "2007", "nickname": "name2007"}
{"index": {"_id": "2008"}}
{"id": "2008", "nickname": "name2008"}
actualización de parte de los campos del documento
POST /shop/_doc/_bulk
{"update": {"_id": "2004"}}
{"doc":{ "id": "3004"}}
{"update": {"_id": "2007"}}
{"doc":{ "nickname": "nameupdate"}}
Eliminar Eliminar
# 不用跟request body
POST /shop/_doc/_bulk
{"delete": {"_id": "2004"}}
{"delete": {"_id": "2007"}}
lotes integral varias operaciones
POST /shop/_doc/_bulk
{"create": {"_id": "8001"}}
{"id": "8001", "nickname": "name8001"}
{"update": {"_id": "2001"}}
{"doc":{ "id": "20010"}}
{"delete": {"_id": "2003"}}
{"delete": {"_id": "2005"}}
Tip Oficial: Cada cluster con un lote de su propio umbral máximo rendimiento, cuando se alcanza este umbral (número de lote de las operaciones), el rendimiento se reducirá