Source Filtering Usageedit

Allows to control how the _source field is returned with every hit. By default operations return the contents of the _source field unless you have used the fields parameter or if the _source field is disabled.

See the Elasticsearch documentation on Source Filtering for more detail.

Fluent DSL exampleedit

s => s
.Query(q => ProjectFilter)
.Source(src => src
    .IncludeAll()
    .Excludes(e => e
        .Fields(
            p => p.Description
        )
    )
)

Object Initializer syntax exampleedit

new SearchRequest<Project>
{
    Query = ProjectFilter,
    Source = new SourceFilter
    {
        Includes = "*",
        Excludes = Fields<Project>(p => p.Description)
    }
}

Example json output.

{
  "query": {
    "term": {
      "type": {
        "value": "project"
      }
    }
  },
  "_source": {
    "includes": [
      "*"
    ],
    "excludes": [
      "description"
    ]
  }
}

Handling Responsesedit

response.ShouldBeValid();

foreach (var document in response.Documents)
{
    document.Name.Should().NotBeNull();
    document.StartedOn.Should().NotBe(default(DateTime));
    document.Description.Should().BeNull();
}

Fluent DSL exampleedit

s => s.Source(false)

Object Initializer syntax exampleedit

new SearchRequest<Project>
{
    Source = false
}

Example json output.

{
  "_source": false
}

Handling Responsesedit

response.ShouldBeValid();
foreach (var hit in response.Hits)
    hit.Source.Should().BeNull();