English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Elasticsearch ofrece API de documento único y API de múltiples documentos, donde las llamadas API se dirigen a documentos individuales y múltiples documentos, respectivamente.
Cuando se realiza una solicitud a un índice correspondiente con un mapeo específico, ayuda a agregar o actualizar documentos JSON en el índice. Por ejemplo, la siguiente solicitud agregará un objeto JSON al índice "escuelas" y al mapeo "escuelas".-
PUT escuelas/_doc/5 { nombre":"Escuela Ciudad", "descripción":"ICSE", "calle":"West End", "ciudad":"Meerut", "estado":"ACTIVO", "codigo_postal":""250002, "location":[28.9926174, 77.692485], "fees":3500,, "etiquetas":["completamente automatizado"], "calificación":""4.5 }
Al ejecutar el código anterior, obtenemos el siguiente resultado-
{ "_index": "schools", "_type": "_doc", "_id": ""5, "_version": 1, "result" : "created", "_shards": { "total": 2, "successful": 1, "failed": 0 } "_seq_no": 2, "_primary_term": 1 }
Cuando se solicita agregar un objeto JSON a un índice específico, si ese índice no existe, esta API creará automáticamente ese índice y el mapeo básico del objeto JSON específico. Puede desactivar esta función cambiando el valor de los siguientes parámetros en el archivo elasticsearch.yml a false.
action.auto_create_index:false index.mapper.dynamic:false
También puede limitar la creación automática de índices, cambiando el valor de los siguientes parámetros solo para permitir nombres de índices con patrones específicos.-
action.auto_create_index:+cuenta*,-banco*
Atención:aquí + representa permitir, mientras que – representa no permitir.
Elasticsearch también ofrece herramientas de control de versiones. Podemos usar los parámetros de consulta de versión para especificar la versión de un documento específico.
PUT escuelas/_doc/5?version=7&version_type=external { "name":"Central School", "description":"CBSE Affiliation", "street":"Nagan" "city":"paprola", "state":"HP", "zip":"176115, "location":[31.8955385, 76.8380405], "fees":2200, "tags":["Senior Secondary", "beautiful campus"], "rating":"3.3 }
Al ejecutar el código anterior, obtenemos el siguiente resultado-
{ "_index": "schools", "_type": "_doc", "_id": ""5, "_version": 7, "result": "updated", "_shards": { "total": 2, "successful": 1, "failed": 0 } "_seq_no": 3, "_primary_term": 1 }
El control de versión es un proceso en tiempo real, no afectado por las operaciones de búsqueda en tiempo real.
Hay dos tipos de control de versión más importantes-
El control de versión interno es el tipo predeterminado, desde1comienza y aumenta con cada actualización (incluso eliminación).
Cuando el control de versión del documento se almacena en un sistema externo (como un sistema de control de versión de terceros), se utiliza esta función. Para habilitar esta función, necesitamos establecer version_type en external. En este caso, Elasticsearch almacenará el número de versión especificado por el sistema externo y no lo aumentará automáticamente.
El tipo de operación se utiliza para ejecutar operaciones de creación forzadas. Esto ayuda a evitar la sobrescripción de documentos existentes.
PUT chapter/_doc/1?op_type=create { "Text":"this is chapter one" }
Al ejecutar el código anterior, obtenemos el siguiente resultado-
{ "_index" : "chapter" "_type": "_doc", "_id": ""1, "_version": 1, "result" : "created", "_shards": { "total": 2, "successful": 1, "failed": 0 } "_seq_no" : 0, "_primary_term": 1 }
Si no se especifica ID en la operación de índice, Elasticsearch generará automáticamente un ID para el documento.
POST chapter/_doc/ { "user" : "tpoint" "post_date" : ""2018-12-25T14:12:12, "message" : "Elasticsearch Tutorial" }
Al ejecutar el código anterior, obtenemos el siguiente resultado-
{ "_index" : "chapter" "_type": "_doc", "_id" : "PVghWGoB"7LiDTeV6LSGu", "_version": 1, "result" : "created", "_shards": { "total": 2, "successful": 1, "failed": 0 } "_seq_no": 1, "_primary_term": 1 }
La API ayuda a extraer objetos JSON de tipo mediante la ejecución de solicitudes GET en documentos específicos.
pre class="prettyprint notranslate" > GET schools/_doc/5
Al ejecutar el código anterior, obtenemos el siguiente resultado-
{ "_index": "schools", "_type": "_doc", "_id": ""5, "_version": 7, "_seq_no": 3, "_primary_term": 1, "found" : true, "_source" : { "name" : "Central School" "description" : "CBSE Affiliation" "street" : "Nagan", "city" : "paprola", "state" : "HP", "zip" : ""176115, "location" : [ 31.8955385, 76.8380405 ], "fees" : " 2200,, "tags" : [ "Senior Secondary", "beautiful campus" ], "rating" : ""3.3 } }
Esta operación es en tiempo real y no se ve afectada por la tasa de actualización del índice.
También puedes especificar la versión, y luego Elasticsearch solo obtendrá la versión del documento.
Puedes especificar _all en la solicitud para que Elasticsearch pueda buscar el ID del documento para cada tipo, devolviendo el primer documento coincidente.
您还可以在特定文档的结果中指定所需的字段。
GET schools/_doc/5?_source_includes=name,fees
Al ejecutar el código anterior, obtenemos el siguiente resultado-
{ "_index": "schools", "_type": "_doc", "_id": ""5, "_version": 7, "_seq_no": 3, "_primary_term": 1, "found" : true, "_source" : { "fees" : " 2200,, "name" : "Central School" } }
您还可以通过在get请求中添加_source部分来获取结果中的源部分。
GET schools/_doc/5?_source
Al ejecutar el código anterior, obtenemos el siguiente resultado-
{ "_index": "schools", "_type": "_doc", "_id": ""5, "_version": 7, "_seq_no": 3, "_primary_term": 1, "found" : true, "_source" : { "name" : "Central School" "description" : "CBSE Affiliation" "street" : "Nagan", "city" : "paprola", "state" : "HP", "zip" : ""176115, "location" : [ 31.8955385, 76.8380405 ], "fees" : " 2200,, "tags" : [ "Senior Secondary", "beautiful campus" ], "rating" : ""3.3 } }
您还可以通过将refresh参数设置为true来刷新分片,然后再执行get操作。
您可以通过向Elasticsearch发送HTTP DELETE请求来删除特定的索引,映射或文档。
DELETE schools/_doc/4
Al ejecutar el código anterior, obtenemos el siguiente resultado-
{ "found":true, "_index":"schools", "_type":"school", "_id":"4, "_version":2, "_shards":{"total":2, "successful":1, "failed":0} }
可以指定文档的版本以删除该特定版本。可以指定路由参数以从特定用户删除文档,并且如果文档不属于该特定用户,则操作将失败。在此操作中,您可以像GET API一样指定刷新和超时选项。
脚本用于执行此操作,版本控制用于确保在获取和重新编制索引期间未发生任何更新。例如,您可以使用脚本更新学费-
POST schools/_update/4 { "script" : { "source": "ctx._source.name = params.sname", "lang": "painless", "params" : { "sname" : "City Wise School" } } }
Al ejecutar el código anterior, obtenemos el siguiente resultado-
{ "_index": "schools", "_type": "_doc", "_id": ""4, "_version": 3, "result": "updated", "_shards": { "total": 2, "successful": 1, "failed": 0 } "_seq_no": 4, "_primary_term": 2 }
Puede verificar las actualizaciones enviando una solicitud de obtención a los documentos actualizados.