Using ElasticSearch NEST, I am having trouble getting expected results back from my queries. My index/type layout is as follows:
Each of those types have their own fields, and I am using NEST's Index() method to index the data. I can verify that it's being indexed properly by:
http://localhost:9200/theatres/_mapping
For reference, here is my client configuration:
// TODO: Put settings in config
var node = new Uri("http://localhost:9200");
var connSettings = new ConnectionSettings(node);
connSettings.SetDefaultIndex("theatres");
connSettings.ThrowOnElasticsearchServerExceptions();
var client = new ElasticClient(connSettings);
The Query
Now, for the query, I want to search all types and all fields within the index. Using the Head plugin, I am able to generate the query and get the expected results:
Using that query that it generated, I tried the following NEST query:
var query = "waukesha"; // This would be passed in
var resp = client.Search<dynamic>(s => s
.From(0)
.Take(10)
.Query(qry => qry
.Bool(b => b
.Must(m => m
.QueryString(qs => qs
.DefaultField("_all")
.Query(query))))));
However, this gives me a different result. Is NEST doing something behind the scenes that I'm not aware of? Or is this not supported?
Your query is missing .AllTypes()
You can also specify multiple types using .Types("type1", "type1")
So:
var query = "waukesha"; // This would be passed in
var resp = client.Search<dynamic>(s => s
.AllTypes()
.From(0)
.Take(10)
.Query(qry => qry
.Bool(b => b
.Must(m => m
.QueryString(qs => qs
.DefaultField("_all")
.Query(query))))));