Re: Searching with Elasticsearch.Net
- slaps forhead oboe... hitpos should start at 0 not 1 got my results now converting to DG :-) I will post final code once done. On Tuesday, January 13, 2015 at 8:57:11 PM UTC-5, GWired wrote: Getting closer: I converted my searchResponse to a var i can now refer to a value like this: (((dynamic)dyndist).hits.hits[1]).Value._source.Id This works great and if I put a 2 there it works and returns the second item. Ok that's all well and good however. I cannot do something like this: var dyndist = new Elasticsearch.Net.DynamicDictionary(); dyndist = searchResponse.Response; long maxhit; maxhit = ((dynamic)dyndist).hits.total.Value; //this does get the # of hits for (int hitpos = 1 ; hitpos = maxhit; hitpos ++) { //just creating a string here but I would theid = theid + : + (((dynamic)dyndist).hits.hits[hitpos]).Value._source.Id; //id is my id not the id from ElasticSearch } I get this error: An unhandled exception of type 'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException' occurred in System.Core.dll Additional information: Cannot perform runtime binding on a null reference If I switch that hitpos to a 1 it works fine and returns the 1 value. i want to get them all somehow.. Any ideas. I tried converting to a List but only .Values is a List seems I can't convert hits.hits. Stuck here for now :-( On Monday, January 12, 2015 at 10:37:00 PM UTC-5, GWired wrote: Ok that worked. Sort of. I can see the results in the response now. However I'm not able to refer to hits. I can see them but there isn't a hit or hits type to refer to so I can see what is in a hit. string? myid = searchResponse.Response.hits.hits[1].nestedObject[id ].myid Doesn't work. Trying to follow this guide here http://nest.azurewebsites.net/elasticsearch-net/handling-responses.html and hits isn't a member/method or type. When I try to refer to hits i get this... Error 2 'Elasticsearch.Net.DynamicDictionary' does not contain a definition for 'hits' and no extension method 'hits' accepting a first argument of type 'Elasticsearch.Net.DynamicDictionary' could be are you missing a using directive or an assembly reference?) C:\pathtoproject\main.cs 56 52 SearchTest On Saturday, January 10, 2015 at 6:27:03 AM UTC-5, Steve Flook wrote: I think you are just getting unlucky. You are asking for the top 10 results, starting *after *result number 10. Only problem is the search response is saying there is only 10 results total, so there are no hits to return. Try changing your from to 0, instead of 1 * 10. Or you can just omit that all together, as ES will default to 0. If you are coming from the world of sql, one difference in simple queries is ES gives back the total number of results with that total property you see in the response's hits section. So even if you ask for only 10 documents, total will give you the full count no matter what. Steve On Friday, January 9, 2015 at 12:43:36 PM UTC-5, Garrett Johnson wrote: Hi All, I would like to use Elasticsearch.Net (NEST requires types and I do not want strong types) to do a simple _all term search. I can do this using the plugin elasticsearch head and I retrieve the appropriate documents. Here is some simple code I wrote just to say hey give me all that match. var node = new Uri(http://myhost:9200); var config = new ConnectionConfiguration(node); var exposed = config.ExposeRawResponse(true); var client = new ElasticsearchClient(config); var search = new { size = 10, from = 1 * 10, query = new { query_string = new { query = this.textBox1.Text } }, }; var searchResponse = client.Search(jdbc,search); This returns these results: {StatusCode: 200, Method: POST, Url: http://u4vmeqlditapp01:9200/jdbc/_search, Request: {size:10,from:10,query:{query_string:{query:Garrett}}}, Response: {took:5,timed_out:false,_shards:{total:5,successful:5,failed:0},hits:{total:10,max_score:1.1672286,hits:[]}}} But no documents. Here is the JSON I'm trying to replicate: - query: { - bool: { - must: [ - { - query_string: { - default_field: _all, - query: Garrett } } ], - must_not: [ ], - should: [ ] } }, - from: 0, - size: 25000, - sort: [ ], - facets: { } I'm pretty sure it is because the query doesn't have the default_field set to _all... But I don't know how to set that. I've tried several string concatenations to no avail it just searched for them. Any one with any ideas. I want to simply search all types for a single string. Garrett -- You received this message because you are subscribed to the Google Groups elasticsearch group. To unsubscribe from this group and stop receiving emails from it, send an email to
Re: Searching with Elasticsearch.Net
Getting closer: I converted my searchResponse to a var i can now refer to a value like this: (((dynamic)dyndist).hits.hits[1]).Value._source.Id This works great and if I put a 2 there it works and returns the second item. Ok that's all well and good however. I cannot do something like this: var dyndist = new Elasticsearch.Net.DynamicDictionary(); dyndist = searchResponse.Response; long maxhit; maxhit = ((dynamic)dyndist).hits.total.Value; //this does get the # of hits for (int hitpos = 1 ; hitpos = maxhit; hitpos ++) { //just creating a string here but I would theid = theid + : + (((dynamic)dyndist).hits.hits[hitpos]).Value._source.Id; //id is my id not the id from ElasticSearch } I get this error: An unhandled exception of type 'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException' occurred in System.Core.dll Additional information: Cannot perform runtime binding on a null reference If I switch that hitpos to a 1 it works fine and returns the 1 value. i want to get them all somehow.. Any ideas. I tried converting to a List but only .Values is a List seems I can't convert hits.hits. Stuck here for now :-( On Monday, January 12, 2015 at 10:37:00 PM UTC-5, GWired wrote: Ok that worked. Sort of. I can see the results in the response now. However I'm not able to refer to hits. I can see them but there isn't a hit or hits type to refer to so I can see what is in a hit. string? myid = searchResponse.Response.hits.hits[1].nestedObject[id ].myid Doesn't work. Trying to follow this guide here http://nest.azurewebsites.net/elasticsearch-net/handling-responses.html and hits isn't a member/method or type. When I try to refer to hits i get this... Error 2 'Elasticsearch.Net.DynamicDictionary' does not contain a definition for 'hits' and no extension method 'hits' accepting a first argument of type 'Elasticsearch.Net.DynamicDictionary' could be are you missing a using directive or an assembly reference?) C:\pathtoproject\main.cs 56 52 SearchTest On Saturday, January 10, 2015 at 6:27:03 AM UTC-5, Steve Flook wrote: I think you are just getting unlucky. You are asking for the top 10 results, starting *after *result number 10. Only problem is the search response is saying there is only 10 results total, so there are no hits to return. Try changing your from to 0, instead of 1 * 10. Or you can just omit that all together, as ES will default to 0. If you are coming from the world of sql, one difference in simple queries is ES gives back the total number of results with that total property you see in the response's hits section. So even if you ask for only 10 documents, total will give you the full count no matter what. Steve On Friday, January 9, 2015 at 12:43:36 PM UTC-5, Garrett Johnson wrote: Hi All, I would like to use Elasticsearch.Net (NEST requires types and I do not want strong types) to do a simple _all term search. I can do this using the plugin elasticsearch head and I retrieve the appropriate documents. Here is some simple code I wrote just to say hey give me all that match. var node = new Uri(http://myhost:9200); var config = new ConnectionConfiguration(node); var exposed = config.ExposeRawResponse(true); var client = new ElasticsearchClient(config); var search = new { size = 10, from = 1 * 10, query = new { query_string = new { query = this.textBox1.Text } }, }; var searchResponse = client.Search(jdbc,search); This returns these results: {StatusCode: 200, Method: POST, Url: http://u4vmeqlditapp01:9200/jdbc/_search, Request: {size:10,from:10,query:{query_string:{query:Garrett}}}, Response: {took:5,timed_out:false,_shards:{total:5,successful:5,failed:0},hits:{total:10,max_score:1.1672286,hits:[]}}} But no documents. Here is the JSON I'm trying to replicate: - query: { - bool: { - must: [ - { - query_string: { - default_field: _all, - query: Garrett } } ], - must_not: [ ], - should: [ ] } }, - from: 0, - size: 25000, - sort: [ ], - facets: { } I'm pretty sure it is because the query doesn't have the default_field set to _all... But I don't know how to set that. I've tried several string concatenations to no avail it just searched for them. Any one with any ideas. I want to simply search all types for a single string. Garrett -- You received this message because you are subscribed to the Google Groups elasticsearch group. To unsubscribe from this group and stop receiving emails from it, send an email to elasticsearch+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/f4d6beb4-601c-4460-9a61-2850a8f00800%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: Searching with Elasticsearch.Net
Ok that worked. Sort of. I can see the results in the response now. However I'm not able to refer to hits. I can see them but there isn't a hit or hits type to refer to so I can see what is in a hit. string? myid = searchResponse.Response.hits.hits[1].nestedObject[id].myid Doesn't work. Trying to follow this guide here http://nest.azurewebsites.net/elasticsearch-net/handling-responses.html and hits isn't a member/method or type. When I try to refer to hits i get this... Error 2 'Elasticsearch.Net.DynamicDictionary' does not contain a definition for 'hits' and no extension method 'hits' accepting a first argument of type 'Elasticsearch.Net.DynamicDictionary' could be are you missing a using directive or an assembly reference?) C:\pathtoproject\main.cs 56 52 SearchTest On Saturday, January 10, 2015 at 6:27:03 AM UTC-5, Steve Flook wrote: I think you are just getting unlucky. You are asking for the top 10 results, starting *after *result number 10. Only problem is the search response is saying there is only 10 results total, so there are no hits to return. Try changing your from to 0, instead of 1 * 10. Or you can just omit that all together, as ES will default to 0. If you are coming from the world of sql, one difference in simple queries is ES gives back the total number of results with that total property you see in the response's hits section. So even if you ask for only 10 documents, total will give you the full count no matter what. Steve On Friday, January 9, 2015 at 12:43:36 PM UTC-5, Garrett Johnson wrote: Hi All, I would like to use Elasticsearch.Net (NEST requires types and I do not want strong types) to do a simple _all term search. I can do this using the plugin elasticsearch head and I retrieve the appropriate documents. Here is some simple code I wrote just to say hey give me all that match. var node = new Uri(http://myhost:9200); var config = new ConnectionConfiguration(node); var exposed = config.ExposeRawResponse(true); var client = new ElasticsearchClient(config); var search = new { size = 10, from = 1 * 10, query = new { query_string = new { query = this.textBox1.Text } }, }; var searchResponse = client.Search(jdbc,search); This returns these results: {StatusCode: 200, Method: POST, Url: http://u4vmeqlditapp01:9200/jdbc/_search, Request: {size:10,from:10,query:{query_string:{query:Garrett}}}, Response: {took:5,timed_out:false,_shards:{total:5,successful:5,failed:0},hits:{total:10,max_score:1.1672286,hits:[]}}} But no documents. Here is the JSON I'm trying to replicate: - query: { - bool: { - must: [ - { - query_string: { - default_field: _all, - query: Garrett } } ], - must_not: [ ], - should: [ ] } }, - from: 0, - size: 25000, - sort: [ ], - facets: { } I'm pretty sure it is because the query doesn't have the default_field set to _all... But I don't know how to set that. I've tried several string concatenations to no avail it just searched for them. Any one with any ideas. I want to simply search all types for a single string. Garrett -- You received this message because you are subscribed to the Google Groups elasticsearch group. To unsubscribe from this group and stop receiving emails from it, send an email to elasticsearch+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/2d83b245-5eef-4948-b1f1-df0a5cbf1950%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: Searching with Elasticsearch.Net
Ok that worked. Sort of. I can see the results in the response now. However I'm not able to refer to hits. I can see them but there isn't a hit or hits type to refer to so I can see what is in a hit. string? myid = searchResponse.Response.hits.hits[1].nestedObject[id].myid Doesn't work. Trying to follow this guide here http://nest.azurewebsites.net/elasticsearch-net/handling-responses.html and hits isn't a member/method or type. When I try to refer to hits i get this... Error 2 'Elasticsearch.Net.DynamicDictionary' does not contain a definition for 'hits' and no extension method 'hits' accepting a first argument of type 'Elasticsearch.Net.DynamicDictionary' could be are you missing a using directive or an assembly reference?) C:\Users\Garrett_Johnson\documents\visual studio 2013\Projects\SearchTest\SearchTest\main.cs 56 52 SearchTest On Saturday, January 10, 2015 at 6:27:03 AM UTC-5, Steve Flook wrote: I think you are just getting unlucky. You are asking for the top 10 results, starting *after *result number 10. Only problem is the search response is saying there is only 10 results total, so there are no hits to return. Try changing your from to 0, instead of 1 * 10. Or you can just omit that all together, as ES will default to 0. If you are coming from the world of sql, one difference in simple queries is ES gives back the total number of results with that total property you see in the response's hits section. So even if you ask for only 10 documents, total will give you the full count no matter what. Steve On Friday, January 9, 2015 at 12:43:36 PM UTC-5, Garrett Johnson wrote: Hi All, I would like to use Elasticsearch.Net (NEST requires types and I do not want strong types) to do a simple _all term search. I can do this using the plugin elasticsearch head and I retrieve the appropriate documents. Here is some simple code I wrote just to say hey give me all that match. var node = new Uri(http://myhost:9200); var config = new ConnectionConfiguration(node); var exposed = config.ExposeRawResponse(true); var client = new ElasticsearchClient(config); var search = new { size = 10, from = 1 * 10, query = new { query_string = new { query = this.textBox1.Text } }, }; var searchResponse = client.Search(jdbc,search); This returns these results: {StatusCode: 200, Method: POST, Url: http://u4vmeqlditapp01:9200/jdbc/_search, Request: {size:10,from:10,query:{query_string:{query:Garrett}}}, Response: {took:5,timed_out:false,_shards:{total:5,successful:5,failed:0},hits:{total:10,max_score:1.1672286,hits:[]}}} But no documents. Here is the JSON I'm trying to replicate: - query: { - bool: { - must: [ - { - query_string: { - default_field: _all, - query: Garrett } } ], - must_not: [ ], - should: [ ] } }, - from: 0, - size: 25000, - sort: [ ], - facets: { } I'm pretty sure it is because the query doesn't have the default_field set to _all... But I don't know how to set that. I've tried several string concatenations to no avail it just searched for them. Any one with any ideas. I want to simply search all types for a single string. Garrett -- You received this message because you are subscribed to the Google Groups elasticsearch group. To unsubscribe from this group and stop receiving emails from it, send an email to elasticsearch+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/ef61025c-a740-4c90-b514-0f823bdd0b07%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: Searching with Elasticsearch.Net
I think you are just getting unlucky. You are asking for the top 10 results, starting *after *result number 10. Only problem is the search response is saying there is only 10 results total, so there are no hits to return. Try changing your from to 0, instead of 1 * 10. Or you can just omit that all together, as ES will default to 0. If you are coming from the world of sql, one difference in simple queries is ES gives back the total number of results with that total property you see in the response's hits section. So even if you ask for only 10 documents, total will give you the full count no matter what. Steve On Friday, January 9, 2015 at 12:43:36 PM UTC-5, Garrett Johnson wrote: Hi All, I would like to use Elasticsearch.Net (NEST requires types and I do not want strong types) to do a simple _all term search. I can do this using the plugin elasticsearch head and I retrieve the appropriate documents. Here is some simple code I wrote just to say hey give me all that match. var node = new Uri(http://myhost:9200); var config = new ConnectionConfiguration(node); var exposed = config.ExposeRawResponse(true); var client = new ElasticsearchClient(config); var search = new { size = 10, from = 1 * 10, query = new { query_string = new { query = this.textBox1.Text } }, }; var searchResponse = client.Search(jdbc,search); This returns these results: {StatusCode: 200, Method: POST, Url: http://u4vmeqlditapp01:9200/jdbc/_search, Request: {size:10,from:10,query:{query_string:{query:Garrett}}}, Response: {took:5,timed_out:false,_shards:{total:5,successful:5,failed:0},hits:{total:10,max_score:1.1672286,hits:[]}}} But no documents. Here is the JSON I'm trying to replicate: - query: { - bool: { - must: [ - { - query_string: { - default_field: _all, - query: Garrett } } ], - must_not: [ ], - should: [ ] } }, - from: 0, - size: 25000, - sort: [ ], - facets: { } I'm pretty sure it is because the query doesn't have the default_field set to _all... But I don't know how to set that. I've tried several string concatenations to no avail it just searched for them. Any one with any ideas. I want to simply search all types for a single string. Garrett -- You received this message because you are subscribed to the Google Groups elasticsearch group. To unsubscribe from this group and stop receiving emails from it, send an email to elasticsearch+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/b4c0a2ac-acdb-43fb-a238-88520a4c1be5%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: Searching with Elasticsearch.Net
If all you need is querying, I will highly recommend looking at https://github.com/CenturyLinkCloud/ElasticLINQ for .NET I also have my own stab at a .NET client library for Elasticsearch here: https://github.com/synhershko/NElasticsearch / https://www.nuget.org/packages/NElasticsearch/1.0.14 (still WIP) -- Itamar Syn-Hershko http://code972.com | @synhershko https://twitter.com/synhershko Freelance Developer Consultant Author of RavenDB in Action http://manning.com/synhershko/ On Fri, Jan 9, 2015 at 7:54 PM, Garrett Johnson garrettcjohn...@gmail.com wrote: { query = this.textBox1.Text, default_field = _all }, This seems to send it. Still don't know how to get the results. It's like it should be in a foreach(hit in hits) {get fields} but I have nothing and documentation isn't helping. On Friday, January 9, 2015 at 12:43:36 PM UTC-5, Garrett Johnson wrote: Hi All, I would like to use Elasticsearch.Net (NEST requires types and I do not want strong types) to do a simple _all term search. I can do this using the plugin elasticsearch head and I retrieve the appropriate documents. Here is some simple code I wrote just to say hey give me all that match. var node = new Uri(http://myhost:9200); var config = new ConnectionConfiguration(node); var exposed = config.ExposeRawResponse(true); var client = new ElasticsearchClient(config); var search = new { size = 10, from = 1 * 10, query = new { query_string = new { query = this.textBox1.Text } }, }; var searchResponse = client.Search(jdbc,search); This returns these results: {StatusCode: 200, Method: POST, Url: http://u4vmeqlditapp01:9200/jdbc/_search, Request: {size:10,from:10,query:{query_string:{query:Garrett}}}, Response: {took:5,timed_out:false,_shards:{total:5, successful:5,failed:0},hits:{total:10,max_score: 1.1672286,hits:[]}}} But no documents. Here is the JSON I'm trying to replicate: - query: { - bool: { - must: [ - { - query_string: { - default_field: _all, - query: Garrett } } ], - must_not: [ ], - should: [ ] } }, - from: 0, - size: 25000, - sort: [ ], - facets: { } I'm pretty sure it is because the query doesn't have the default_field set to _all... But I don't know how to set that. I've tried several string concatenations to no avail it just searched for them. Any one with any ideas. I want to simply search all types for a single string. Garrett -- You received this message because you are subscribed to the Google Groups elasticsearch group. To unsubscribe from this group and stop receiving emails from it, send an email to elasticsearch+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/c7be81ac-d3ff-4841-b458-41aae34df921%40googlegroups.com https://groups.google.com/d/msgid/elasticsearch/c7be81ac-d3ff-4841-b458-41aae34df921%40googlegroups.com?utm_medium=emailutm_source=footer . For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups elasticsearch group. To unsubscribe from this group and stop receiving emails from it, send an email to elasticsearch+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/CAHTr4ZtOWzNT6to0H5ahDooJ-J%3DAgLhRcJxdJwUwCB3i7wjLeg%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.