Interesting! If that supports straight lucene syntax then this is golden. 
Our system must support full lucene syntax along with "fuzzy" searches 
which is why I've been using query_string.

Thanks!

On Thursday, August 21, 2014 10:55:36 AM UTC-7, Ivan Brusic wrote:
>
> One more thing! The match query does not go through the query parser phase.
>
>
> http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-match-query.html#_comparison_to_query_string_field
>
> curl -XPOST "http://localhost:9200/example/example/_search?pretty=true"; 
> -d '
> {
>   "query": {
>     "match": {
>       "name": "\"exampleof bug\""
>     }
>   }
> }
> '
>
>
>
> On Thu, Aug 21, 2014 at 10:49 AM, ben <[email protected] <javascript:>> 
> wrote:
>
>> 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]> 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?a
>>>>>>>>> nalyzer=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-dce
>>>>>>>> 5-4272-8b80-1f148e96f8ae%40googlegroups.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%40goo
>>>>>> glegroups.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].
>>>> 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] <javascript:>.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/elasticsearch/5d4e0ad0-cea8-46fa-8c1a-ebacf602f0af%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/elasticsearch/5d4e0ad0-cea8-46fa-8c1a-ebacf602f0af%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/f4b52de7-65b1-467c-942d-b4d1858c88cb%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to