Searchedit
From / Sizeedit
Pagination can be done using From() and Size():
.From(0) .Size(50)
Alternatively,
.Skip(0) .Take(50)
can also be used.
Indices / Typesedit
NEST will automatically infer the index to search based on the type specified:
client.Search<MyObject>(s => s
...
)If MyObject has not been mapped to an index, then the default index will be used.
You can override type inferrence by explicitly specifying the index to search on:
client.Search<MyObject>(s => s.
.Index("Index_A")
...
)Remember that since Elasticsearch 0.19.8 you can also specify wildcards on index names:
client.Search<MyObject>(s => s
.Index("Index_*")
...
)
.Types(new [] { typeof(ElasticSearchProject)})You can also tell NEST to search multiple indices:
client.Search<MyObject>(s => s
.Indices(new [] {"Index_A", "Index_B"})
...
)Or you can search across all indices
client.Search<MyObject>(s => s
.AllIndices()
...
)Covarianceedit
You can make C# covariance work for you by typing the search to a common base class (can be object)
i.e:
.Search<object>(s => s
.Types(typeof(Product), typeof(Category), typeof(Manufacturer))
.Query(q => ...)
);This will search on /yourdefaultindex/products,categories,manufacturers/_search and setup a
default ConcreteTypeSelector that understands what type each returned document is.
Using
.ConcreteTypeSelector(Func<dynamic, Hit<dynamic>, Type>)
you can manually specify the type of each hit based on some JSON value (on dynamic) or on the hit metadata.