Я работал с Elasticsearch в процессе разработки и использовал псевдонимы как способ разделения клиентов в моем мультитенантном приложении. Я создаю такой псевдоним:
POST https://<ES_URL>/_aliases
{
"actions": [
{
"add": {
"index": "uploads",
"alias": "uploads_d520e58b-9874-406c-a537-669e00552f49",
"filter": {
"bool": {
"must": [
{
"match": {
"tenant": "d520e58b-9874-406c-a537-669e00552f49"
}
}
]
}
}
}
}
]
}
Затем я массово вставляю данные 7 документов за раз с помощью:
POST https://<ES_URL>/uploads_a206c67f-db10-47bc-857b-5bf2e23e4dad/_bulk?refresh
{
"index":{
"_index":"uploads"
}
}
{
"depth":0,
"moduleType":"00",
"sensorId":"aca43cc50dd1251d",
"sensorType":"BA",
"timestamp":1596466317,
"value":1.35,
"tenant":"a206c67f-db10-47bc-857b-5bf2e23e4dad"
}
# Times 7
Затем я могу получить эти 7 точек данных с помощью запроса:
GET https://<ES_URL>/uploads_d520e58b-9874-406c-a537-669e00552f49/_search
{
"query": {
"match_all": {}
},
"size": 100
}
После развертывания в моей среде prod (2 шарда, 2 узла) я вижу разные результаты. Я все еще могу создать свой псевдоним и вставить 7 записей (подтверждено ответом Elasticsearch). Однако, когда я выполняю вышеуказанный запрос, возвращаются не все записи (1–5 записей). Количество возвращаемых записей непоследовательно, но всегда меньше числа, которое я вставил в Elasticsearch.
Мне это кажется проблемой, когда я вставляю данные в несколько сегментов, но только извлекаю данные из одного осколка. Мне любопытно, есть ли что-то еще очевидное, чего я мог бы упустить.
Некоторые заключительные детали: я использую Elasti c Search Node против Elasti c Search Version 7.7, который является развернуто в AWS Managed Elasti c Search Service.