Естественно, вы можете указать свои собственные идентификаторы документов Elasticsearch во время вызова к Index API :
PUT kpi_aggr/KPIBackChannel/kpi-v1,w
{
"name": "kpi-v1",
"period_type": "w",
"country": "AL",
"pg_name": "DENTAL CARE",
"panel_type": "retail",
"number_of_records_with_proposal": 10000,
"number_of_proposals": 80000,
"overall_number_of_records": 2000,
"@timestamp": 1442162810
}
Вы также можете сделать это во время _bulk
вызова API :
POST _bulk
{ "index" : { "_index" : "kpi_aggr", "_type" : "KPIBackChannel", "_id" : "kpi-v1,w" } }
{"name":"kpi-v1","period_type":"w","country":"AL","pg_name":"DENTAL CARE","panel_type":"retail","number_of_records_with_proposal":10000,"number_of_proposals":80000,"overall_number_of_records":2000,"@timestamp":1442162810}
Обратите внимание, что Elasticsearch заменит документ новой версией.
Если вы выполните эти два запроса по пустому индексу, тогда запрос по идентификатору документа:
GET kpi_aggr/KPIBackChannel/kpi-v1,w
даст вам следующее:
{
"_index": "kpi_aggr",
"_type": "KPIBackChannel",
"_id": "kpi-v1,w",
"_version": 2,
"found": true,
"_source": {
"name": "kpi-v1",
"period_type": "w",
"country": "AL",
"pg_name": "DENTAL CARE",
"panel_type": "retail",
"number_of_records_with_proposal": 10000,
"number_of_proposals": 80000,
"overall_number_of_records": 2000,
"@timestamp": 1442162810
}
}
Уведомление "_version": 2
, которое в нашем случае указывает на то, что документ был проиндексирован дважды, следовательно, был выполнен "upsert" (но в целом предполагается использовать для Optimistic Concurrency Control ).
Надеюсь, это поможет!