Можно ли опубликовать sh много событий в ElasticSearch одновременно как транзакцию? Итак, если одна публикация не удалась, база данных ES откатится? - PullRequest
0 голосов
/ 05 августа 2020

Я делаю следующее: мне нужно получить файл XML с сервера. Этот XML содержит множество журналов, каждый из которых анализируется и превращается в событие beat.event. Я хочу отправить все журналы в elasticsearch или не отправить ни одного. Могу ли я организовать масштабное мероприятие и опубликовать sh все сразу? Или создайте очередь для хранения всех событий, которые необходимо отправить, так что если одно событие не может быть отправлено, транзакция завершилась и elasticsearch откатился?

Слово здесь - транзакция. Я хочу опубликовать sh все или ничего. Есть ли способ добиться этого?

Мой код ниже:

for i := 0; i < len(s.List); i++ {
                //fmt.Printf("Starting to build the event %v \n", i)
                event := beat.Event{
                    Timestamp: time.Now(),
                    Fields: common.MapStr{
                        "id":                s.List[i].Id,
                        "sipCallId":         s.List[i].SipCallId,
                        "originNumber":      s.List[i].OriginNumber,
                        "targetNumber":      s.List[i].TargetNumber,
                        "originDDD":         s.List[i].OriginDDD,
                        "targetDDD":         s.List[i].TargetDDD,
                        "originInstitution": s.List[i].OriginInstitution,
                        "targetInstitution": s.List[i].TargetInstitution,
                        "setupTime":         s.List[i].SetupTime.SetupTime,
                        "connectTime":       s.List[i].ConnectTime.ConnectTime,
                        "disconnectTime":    s.List[i].DisconnectTime.DisconnectTime,
                        "duration":          s.List[i].Duration,
                        "originType":        s.List[i].OriginType,
                        "targetType":        s.List[i].TargetType,
                        "answered":          s.List[i].Answered,
                        "callCompleted":     s.List[i].CallCompleted,
                        "sipJustification":  s.List[i].SipJustification,
                        //Dados adicionados como argumentos pra chamada do programa.
                        "tipoDoEquipamento":    bt.config.TipoEquipamento,
                        "versaoDoEquipamento":  bt.config.Versao,
                        "nivelDoEquipamento":   bt.config.Nivel,
                        "instituição":          bt.config.Instituicao,
                        "enderecoIP":           bt.config.Ip,
                        "timestampColeta":      time.Now(),
                        "consolidado":          bt.config.Consolidado,
                        "timestampConsolidado": bt.config.TimestampConsolidado,
                    },
                }
                bt.client.Publish(event)
                logp.Info("Event sent")
                //fmt.Printf("Event %v published \n", i)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...