I ran into an issue where the JSON sent to Elastic Search was being encoded as a float. This appears to a normal Golang solved by creating a json.NewDecoder and setting .UseNumber(). Fine enough, the JSON I'm parsing now has the numbers decoded as int64. If I marshal them manually, I get the integer value, however, when I use publisher.PublishEvent they are marshalled to Elastic Search as floats again (ie: 2.200074e+06 instead of 2200074).
Something is happening between me calling PublishEvent and the event being marshalled again out to Elastic Search. But I'm at a loss as to where to look.
I should add that numbers at the top level of my event do get marshalled out as integers, its number in nested objects that get marshalled as floats again. I'm guessing it has something to with ConvertToGenericEvent and MarshalUnmarshall.