English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
O Elasticsearch oferece API de documento único e API de documentos múltiplos, onde as chamadas de API são realizadas para documentos únicos e múltiplos.
Quando uma solicitação é feita para um índice correspondente com um mapeamento específico, isso ajuda a adicionar ou atualizar documentos JSON no índice. Por exemplo, a seguinte solicitação adicionará um objeto JSON ao índice escolas e ao mapeamento escola-
PUT escolas/_doc/5 { nome":"Escola da Cidade", "descrição":"ICSE", "rua":"Oeste", "cidade":"Meerut", "estado":"UP", "cep":"250002", "location":[28.9926174, 77.692485], "fees":3500, "tags":["completamente automatizado"], "rating":"4.5 }
Ao executar o código acima, obtemos os seguintes resultados-
{ "_index": "schools", "_type": "_doc", "_id": ""5, "_version": 1, "result": "created", "_shards": { "total": 2, "successful": 1, "failed": 0 } "_seq_no": 2, "_primary_term": 1 }
Quando a solicitação adiciona um objeto JSON a um índice específico, se o índice não existir, este API criará automaticamente o índice e o mapeamento básico do objeto JSON específico. Você pode desativar essa funcionalidade alterando os valores dos seguintes parâmetros existentes no arquivo elasticsearch.yml para false.
action.auto_create_index:false index.mapper.dynamic:false
Você também pode limitar a criação automática de índices, alterando o valor dos seguintes parâmetros, permitindo apenas nomes de índices com padrões específicos-
action.auto_create_index:+conta*,-banco*
atençãoaqui + representa permitido, enquanto – representa não permitido.
O Elasticsearch também oferece ferramentas de controle de versão. Podemos usar os parâmetros de consulta de versão para especificar a versão específica do documento.
PUT escolas/_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 }
Ao executar o código acima, obtemos os seguintes resultados-
{ "_index": "schools", "_type": "_doc", "_id": ""5, "_version": 7, "result": "updated", "_shards": { "total": 2, "successful": 1, "failed": 0 } "_seq_no": 3, "_primary_term": 1 }
O controle de versão é um processo em tempo real e não é afetado pelas operações de busca em tempo real.
Existem dois tipos de controle de versão mais importantes-
O controle de versão interno é o padrão, começando a partir de1começa e aumenta com cada atualização (incluindo exclusão).
Quando o controle de versão do documento é armazenado em um sistema externo (como um sistema de controle de versão de terceiros), essa função é usada. Para ativar essa função, precisamos definir o version_type como external. Aqui, o Elasticsearch armazenará o número de versão especificado pelo sistema externo e não o incrementará automaticamente.
O tipo de operação é usado para forçar a execução da operação de criação. Isso ajuda a evitar a sobrescrita de documentos existentes.
PUT chapter/_doc/1?op_type=create { "Text": "this is chapter one" }
Ao executar o código acima, obtemos os seguintes resultados-
{ "_index": "chapter" "_type": "_doc", "_id": ""1, "_version": 1, "result": "created", "_shards": { "total": 2, "successful": 1, "failed": 0 } "_seq_no": 0, "_primary_term": 1 }
Se não for especificado ID na operação de índice, o Elasticsearch gerará automaticamente um ID para o documento.
POST chapter/_doc/ { "user": "tpoint" "post_date": ""2018-12-25T14:12:12, "message": "Elasticsearch Tutorial" }
Ao executar o código acima, obtemos os seguintes resultados-
{ "_index": "chapter" "_type": "_doc", "_id": "PVghWGoB"7LiDTeV6LSGu", "_version": 1, "result": "created", "_shards": { "total": 2, "successful": 1, "failed": 0 } "_seq_no": 1, "_primary_term": 1 }
A API ajuda a extrair objetos JSON de tipo através de solicitações GET específicas para documentos.
pre class="prettyprint notranslate" > GET schools/_doc/5
Ao executar o código acima, obtemos os seguintes resultados-
{ "_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 operação é em tempo real e não é afetada pela taxa de atualização do índice.
Você também pode especificar a versão, então o Elasticsearch apenas obterá a versão do documento.
Você ainda pode especificar _all na solicitação para que o Elasticsearch possa procurar o ID do documento por tipo, retornando o primeiro documento correspondente.
您还可以在特定文档的结果中指定所需的字段。
GET schools/_doc/5?_source_includes=name,fees
Ao executar o código acima, obtemos os seguintes resultados-
{ "_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
Ao executar o código acima, obtemos os seguintes resultados-
{ "_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
Ao executar o código acima, obtemos os seguintes resultados-
{ "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" } } }
Ao executar o código acima, obtemos os seguintes resultados-
{ "_index": "schools", "_type": "_doc", "_id": ""4, "_version": 3, "result": "updated", "_shards": { "total": 2, "successful": 1, "failed": 0 } "_seq_no": 4, "_primary_term": 2 }
Você pode verificar as atualizações enviando uma solicitação de obtenção para o documento atualizado.