Post dataedit

The low level client allows you to post a string or byte[] array directly. On top of this, if you pass a collection of string or object they will be serialized using Elasticsearch’s special bulk/multi format.

Implicit Conversionedit

Even though the argument for PostData on the low level client takes a PostData<object>, You can rely on implicit conversion to abstract the notion of PostData completely. You can implicitly convert from the following types

  • string
  • byte[]
  • collection of string
  • collection of object
  • object
var fromString = ImplicitlyConvertsFrom(@string);

var fromByteArray = ImplicitlyConvertsFrom(bytes);
var fromListOfString = ImplicitlyConvertsFrom(listOfStrings);
var fromListOfObject = ImplicitlyConvertsFrom(listOfObjects);
var fromObject = ImplicitlyConvertsFrom(@object);

PostData bytes will always be set if it originated from byte[]

fromByteArray.WrittenBytes.Should().BeSameAs(bytes);

fromString.Type.Should().Be(PostType.LiteralString);
fromByteArray.Type.Should().Be(PostType.ByteArray);
fromListOfString.Type.Should().Be(PostType.EnumerableOfString);
fromListOfObject.Type.Should().Be(PostType.EnumerableOfObject);
fromObject.Type.Should().Be(PostType.Serializable);

and passing a PostData<object> object to a method taking PostData<object> should not wrap

fromString = ImplicitlyConvertsFrom(fromString);

fromByteArray = ImplicitlyConvertsFrom(fromByteArray);
fromListOfString = ImplicitlyConvertsFrom(fromListOfString);
fromListOfObject = ImplicitlyConvertsFrom(fromListOfObject);
fromObject = ImplicitlyConvertsFrom(fromObject);
fromString.Type.Should().Be(PostType.LiteralString);
fromByteArray.Type.Should().Be(PostType.ByteArray);
fromListOfString.Type.Should().Be(PostType.EnumerableOfString);
fromListOfObject.Type.Should().Be(PostType.EnumerableOfObject);
fromObject.Type.Should().Be(PostType.Serializable);