I am running a simple query through the ElasticSearch NEST C# client. I receive results when I run the same query through http, but I get zero documents returned from the client.
This is how I populated the data set:
curl -X POST "http://localhost:9200/blog/posts" -d @blog.json
This POST request returns a JSON result:
http://localhost:9200/_search?q=adipiscing
This is the code I have that is not returning anything.
public class Connector
{
private readonly ConnectionSettings _settings;
private readonly ElasticClient _client;
public Connector()
{
_settings = new ConnectionSettings("localhost", 9200);
_settings.SetDefaultIndex("blog");
_client = new ElasticClient(_settings);
}
public IEnumerable<BlogEntry> Search(string q)
{
var result =
_client.Search<BlogEntry>(s => s.QueryString(q));
return result.Documents.ToList();
}
}
What am I missing? Thanks in advance ..
NEST tries to guess the type and index name and in your case it will use /blog/blogentries
blog
because that what you told the default index is and blogentries
because it will lowercase and pluralize the type name you pass to Search<T>
.
You can control which type and index like so:
.Search<BlogEntry>(s=>s.AllIndices().Query(...));
This will let NEST know you actually want to search on all indices and so nest will translate it to /_search
on the root, equal to the command you issued on curl.
What you most likely want is:
.Search<BlogEntry>(s=>s.Type("posts").Query(...));
So that NEST searches in /blog/posts/_search
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With