Публикация некоторых общих запросов, которые я использовал при работе с ElasticSearch. Пожалуйста, прокомментируйте, хотите ли вы еще несколько образцов или иным образом. :-)
Обновление по запросу
//filter criteria for Update query var filters = [ { terms: { 'field1.keyword': [req.body.field1] } }, { terms: { 'field2.keyword': [req.body.field2] } }, { terms: { 'field3.keyword': [req.body.field3] } } ]; //fields to update in document - var updateScript = `ctx._source['field4']='${req.body.field4}'; ctx._source['field5']='${req.body.field5}'`; var updateQuery = { index: constants.INDEX_NAME, type: constants.INDEX_TYPE, body: { script: { "source" : updateScript }, query: { bool: { must: filters } } }, conflicts: "proceed" }; client.updateByQuery(updateQuery, function(error, response) { handleResponse(error, response, constants.INDEX_NAME); });
Удалить по запросу —
var filters = [ { terms: { 'field1.keyword': [req.body.field1] } }, { terms: { 'field2.keyword': [req.body.field2] } } ]; client.deleteByQuery({ index: INDEX_NAME, body: { query: { bool: { must: filters } } }, conflicts: "proceed" }, function(error, response) { if(error) { log.error(`Exception while deleting documents from index - ${constants.INDEX_NAME} - ${JSON.stringify(error)}`) } else log.debug(`Deleted documents from index - ${constants.INDEX_NAME} - ${JSON.stringify(response)}`) });
Удалить все документы индекса —
POST /indexName/docType/_delete_by_query { "query": { "match_all": {} } }
Общий код для добавления дочернего документа в массив —
function addValueToArrayField(parentDocId, parentIndexName, parentIndexType, fieldName, value) { var sourceField = `ctx._source.${fieldName}.add(params.val)`; return new Promise(function(resolve, reject) { client.update({ index: parentIndexName, type: parentIndexType, id: parentDocId, body : { "script": { "source": `ctx._source.${fieldName}.add(params.val)`, "params": { "val": value } } } }, (error, response) => { if(error !== undefined ){ console.log(`addValueToArrayField() - Error while adding docs to ArraryField, ${JSON.stringify(error)}`); return; } console.log(`addValueToArrayField(): Added the child ${JSON.stringify(value)} to ${parentIndexName} - ${parentDocId}`); } ); }); }