Once again, it is not related to "escaping".

Why don't you use simple query_string?

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-simple-query-string-query.html

It wraps the crappy query_string into "match" query, correctly analyzed and
parsed to Elasticsearch settings, which query_string is not always able to.
And it provides boolean clauses.

Jörg

Examples:

POST /test/_search
{
    "query" : {
        "simple_query_string" : {
            "title" : {
                "query" : ">end"
            }
        }
    }
}

POST /test/_search
{
    "query" : {
        "simple_query_string" : {
            "title" : {
                "query" : " testing and >end"
            }
        }
    }
}



On Tue, Aug 12, 2014 at 11:01 AM, Tihomir Lichev <[email protected]> wrote:

> I think I don't agree ...
> I'm using query_string because I want to give the users the ability to use
> AND, OR +, - etc., out of the box.
> I'm able to escape all other symbols except < and >, and I can use them as
> part of the field content, also as part of the query like any regular
> letter.
> I dont understand why there is no way to escape those 2 symbols only. How
> they are different compared to the others ???
>
> Tihomir
>
> 12 август 2014, вторник, 11:57:21 UTC+3, Jörg Prante написа:
>>
>> This is not a problem of escape.
>>
>> Always use "match" query. Never use "query_string".
>>
>> Jörg
>>
>>
>> On Tue, Aug 12, 2014 at 10:50 AM, Tihomir Lichev <[email protected]>
>> wrote:
>>
>>> Does anyone have an idea hot to escape < and > in a query ???
>>>
>>> 07 август 2014, четвъртък, 18:27:08 UTC+3, Tihomir Lichev написа:
>>>
>>>> Hello,
>>>> I recently discovered very interesting problem
>>>>
>>>> The analyzer is *whitespace:*
>>>> {
>>>>   "mappings": {
>>>>     "test": {
>>>>       "properties": {
>>>>         "title": {
>>>>           "analyzer": "whitespace",
>>>>           "type": "string"
>>>>         },
>>>>         "description": {
>>>>           "analyzer": "whitespace",
>>>>           "type": "string"
>>>>         }
>>>>       }
>>>>     }
>>>>   }
>>>> }
>>>>
>>>>
>>>> I have 3 documents with the following content:
>>>> {
>>>>     "id": 1,
>>>>     "title" : "testing123",
>>>>     "description" : "a description"
>>>> }
>>>> {
>>>>     "id": 2,
>>>>     "title" : "testing >end",
>>>>     "description" : "another description"
>>>> }
>>>> {
>>>>     "id": 3,
>>>>     "title" : "testing <end",
>>>>     "description" : "another description"
>>>> }
>>>>
>>>>
>>>> Then I did the following search queries:
>>>> {
>>>>   "query": {
>>>>
>>>>     "bool": {
>>>>       "should": [
>>>>         {
>>>>           "query_string": {
>>>>             "query": ">end",
>>>>             "fields": [
>>>>               "title"
>>>>             ]
>>>>           }
>>>>         }
>>>>       ]
>>>>     }
>>>>   }
>>>> }
>>>>
>>>> RESULT: 3 hits (all docs) - wrong
>>>> EXPLAIN description: "ConstantScore(title:{end TO *]), product of:"
>>>>
>>>> {
>>>>   "query": {
>>>>
>>>>     "bool": {
>>>>       "should": [
>>>>         {
>>>>           "query_string": {
>>>>             "query": "<end",
>>>>             "fields": [
>>>>               "title"
>>>>             ]
>>>>           }
>>>>         }
>>>>       ]
>>>>     }
>>>>   }
>>>> }
>>>>
>>>> RESULT: 3 hits (all docs) - wrong
>>>> EXPLAIN description: "ConstantScore(title:[* TO end}), product of:"
>>>>
>>>> {
>>>>   "query": {
>>>>
>>>>     "bool": {
>>>>       "should": [
>>>>         {
>>>>           "query_string": {
>>>>             "query": "end",
>>>>             "fields": [
>>>>               "title"
>>>>             ]
>>>>           }
>>>>         }
>>>>       ]
>>>>     }
>>>>   }
>>>> }
>>>>
>>>> RESULT: 0 hits (correct!)
>>>>
>>>> I tried to escape "<" and ">" in the query, but no success
>>>>
>>>> Search for < and > in the elasticsearch and lucene docs - also no luck.
>>>> Obvoiusly they are recognized as range operators, but I want to use them
>>>> also as normal text symbols.
>>>> Is there any way to escape them properly ?
>>>>
>>>>
>>>>  --
>>> 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/9fee6a55-b3ff-4192-9329-4e5f6fead45e%
>>> 40googlegroups.com
>>> <https://groups.google.com/d/msgid/elasticsearch/9fee6a55-b3ff-4192-9329-4e5f6fead45e%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/d6bb86ed-111b-4909-a918-e8ae797579da%40googlegroups.com
> <https://groups.google.com/d/msgid/elasticsearch/d6bb86ed-111b-4909-a918-e8ae797579da%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/CAKdsXoEqhNz_J_avq-m3QXY4aDSwvQMOL%3DCDLAQKoJHsMWNoZg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to