In the ES documentation is talks about escape characters and space is one of them. Seems like if you escaped the query with a "\ " it would ignore that during the parsing.
Thanks for your help. On Thursday, August 21, 2014 10:42:32 AM UTC-7, Ivan Brusic wrote: > > In general, if you are using the keyword tokenizer or non analyzed fields, > then query string queries should probably not be used. Phrase queries and > the keyword tokenizer also do not mix well. > > Your OR queries succeed because "bug" is a token in your index. > > -- > Ivan > > > On Thu, Aug 21, 2014 at 10:26 AM, ben <[email protected] <javascript:>> > wrote: > >> Any idea why single quotes work? >> >> This works but doesn't match the lucene query syntax. >> >> curl -XPOST "$url/$defaultIndex/example/_search?pretty=true" -d ' >> { >> "query": { >> "query_string": { >> "query": "name:''exampleof bug''" >> } >> } >> } >> ' >> >> On Thursday, August 21, 2014 10:09:29 AM UTC-7, Ivan Brusic wrote: >> >>> The query string query is a phrase query "\"exampleof bug\"" >>> The term query is looking for a single token "exampleof bug" >>> >>> The query parser will not use your tokenizer to parse the phrase. It >>> will tokenize based on whitespace and then apply the filters to each term. >>> Your index does not contain the token "exampleof" and your analyze API >>> example confirms it. The issue of the query parser is a long standing one >>> in Lucene. >>> >>> -- >>> Ivan >>> >>> >>> On Thu, Aug 21, 2014 at 9:56 AM, ben <[email protected]> wrote: >>> >>>> But the query is this... >>>> >>>> name:"exampleof bug" >>>> >>>> This should find an exact match in the field name. That exact match >>>> token exists. >>>> >>>> The syntax for lucene under "Fields" section shows a double quote is >>>> the correct character for this. http://lucene.apache.org/core/2_9_4/ >>>> queryparsersyntax.html The term query is found by query_string when >>>> using single quotes, but that doesn't match lucene query documentation. >>>> >>>> Thanks! >>>> >>>> On Thursday, August 21, 2014 9:52:16 AM UTC-7, Ivan Brusic wrote: >>>> >>>>> I suspect the issue is the way the query parser works. The query >>>>> phrase "exampleof bug" will be parsed into a query for the tokens >>>>> "exampleof" and "bug" that are adjacent to each other. The issue is that >>>>> you do not have two such tokens, instead you have a token with the >>>>> value "exampleof bug", which is a single token with a space in it. >>>>> According to Lucene, they are not the same thing. You would need to >>>>> create >>>>> an analyzer that would create the tokens "exampleof" and "bug". >>>>> >>>>> Cheers, >>>>> >>>>> Ivan >>>>> >>>>> >>>>> On Thu, Aug 21, 2014 at 8:47 AM, ben <[email protected]> wrote: >>>>> >>>>>> Also meant to include this in the script. >>>>>> >>>>>> echo "query_string query using singe quote which does not match >>>>>> lucene query documentation" >>>>>> curl -XPOST "$url/$defaultIndex/example/_search?pretty=true" -d ' >>>>>> { >>>>>> "query": { >>>>>> "query_string": { >>>>>> "query": "name:''exampleof bug''" >>>>>> } >>>>>> } >>>>>> } >>>>>> ' >>>>>> >>>>>> On Thursday, August 21, 2014 8:39:14 AM UTC-7, ben wrote: >>>>>>> >>>>>>> I have attached a short bash script to recreate the situation. I >>>>>>> have a fairly simple custom analyzer that I want to break on camel case >>>>>>> so >>>>>>> lowercase is last. Using the _analyze endpoint I can see the token I am >>>>>>> searching for is generated by the analyzer, however searching for it >>>>>>> with >>>>>>> query_string yields a different result that a term query. I put >>>>>>> comments in >>>>>>> the script to explain in more detail. >>>>>>> >>>>>>> Thanks for any help! >>>>>>> >>>>>>> #!/bin/sh >>>>>>> >>>>>>> url="http://localhost:9200" >>>>>>> defaultIndex="example" >>>>>>> >>>>>>> echo "Start over...this will fail the first time the script is run >>>>>>> since the index will not exist" >>>>>>> curl -XDELETE "$url/$defaultIndex?refresh=true" >>>>>>> >>>>>>> echo "Create index with custom analyzer" >>>>>>> curl -XPUT "$url/$defaultIndex" -d '{ >>>>>>> "index": { >>>>>>> "analysis": { >>>>>>> "filter": { >>>>>>> "my_worddelim": { >>>>>>> "type": "word_delimiter", >>>>>>> "split_on_case_change": true, >>>>>>> "preserve_original": true >>>>>>> } >>>>>>> }, >>>>>>> "analyzer": { >>>>>>> "my_analyzer": { >>>>>>> "type": "custom", >>>>>>> "char_filter": [ "html_strip" ], >>>>>>> "tokenizer": "keyword", >>>>>>> "filter": [ "stop", "my_worddelim", "lowercase" ] >>>>>>> } >>>>>>> } >>>>>>> } >>>>>>> } >>>>>>> }' >>>>>>> >>>>>>> echo >>>>>>> >>>>>>> curl -XPUT "$url/$defaultIndex/example/_mapping" -d '{ >>>>>>> "example" : { >>>>>>> "properties" : { >>>>>>> "name": { >>>>>>> "type" : "multi_field", >>>>>>> "path": "just_name", >>>>>>> "fields" : { >>>>>>> "name": { "type": "string", "analyzer": >>>>>>> "my_analyzer" }, >>>>>>> "sample" : {"type" : "string", "index" : "not_analyzed" }, >>>>>>> "sample_name" : {"type" : "string", "analyzer": >>>>>>> "my_analyzer" } >>>>>>> } >>>>>>> } >>>>>>> } >>>>>>> } >>>>>>> }' >>>>>>> >>>>>>> echo "Shows the lowercase token exampleofbug is generated" >>>>>>> curl -XGET "$url/$defaultIndex/_analyze?analyzer=my_analyzer&pretty= >>>>>>> true" -d 'ExampleOf Bug' >>>>>>> >>>>>>> echo "Post the document (haven't tried with non-bulk request)" >>>>>>> curl -XPOST "$url/$defaultIndex/example/_bulk?refresh=true" -d ' >>>>>>> { "index" : {"_index":"example","_type":" >>>>>>> example","_id":"2169167","_version_type":"internal","_timestamp":0} >>>>>>> } >>>>>>> {"name":"ExampleOf Bug"} >>>>>>> ' >>>>>>> >>>>>>> echo >>>>>>> >>>>>>> echo "query_string query is unable to find token in the name field >>>>>>> even though the path is just_name. i also tried escaping space per >>>>>>> documentation and it fails to parse" >>>>>>> curl -XPOST "$url/$defaultIndex/example/_search?pretty=true" -d ' >>>>>>> { >>>>>>> "query": { >>>>>>> "query_string": { >>>>>>> "query": "name:\"exampleof bug\"" >>>>>>> } >>>>>>> } >>>>>>> } >>>>>>> ' >>>>>>> >>>>>>> echo >>>>>>> >>>>>>> echo "Can successfully find token in name field that I was unable to >>>>>>> find with query_string" >>>>>>> curl -XPOST "$url/$defaultIndex/example/_search?pretty=true" -d ' >>>>>>> { >>>>>>> "query": { >>>>>>> "term": { >>>>>>> "name": "exampleof bug" >>>>>>> } >>>>>>> } >>>>>>> } >>>>>>> ' >>>>>>> >>>>>>> >>>>>>> -- >>>>>> 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 [email protected]. >>>>>> To view this discussion on the web visit https://groups.google.com/d/ >>>>>> msgid/elasticsearch/fb920c7a-dce5-4272-8b80-1f148e96f8ae%40goo >>>>>> glegroups.com >>>>>> <https://groups.google.com/d/msgid/elasticsearch/fb920c7a-dce5-4272-8b80-1f148e96f8ae%40googlegroups.com?utm_medium=email&utm_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 [email protected]. >>>> To view this discussion on the web visit https://groups.google.com/d/ >>>> msgid/elasticsearch/f167607d-32da-497e-ba09-bb77cfd0784e% >>>> 40googlegroups.com >>>> <https://groups.google.com/d/msgid/elasticsearch/f167607d-32da-497e-ba09-bb77cfd0784e%40googlegroups.com?utm_medium=email&utm_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 [email protected] <javascript:>. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/elasticsearch/8614174f-f450-4981-9af6-8956033a9378%40googlegroups.com >> >> <https://groups.google.com/d/msgid/elasticsearch/8614174f-f450-4981-9af6-8956033a9378%40googlegroups.com?utm_medium=email&utm_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 [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/5d4e0ad0-cea8-46fa-8c1a-ebacf602f0af%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
