Thanks for the replies.  Unfortunately the analyzer portion is not the 
problem (I pasted the original text in the midst of experimentation).  When 
I had "analyzer" : "my_analyzer" in the mapping it didn't make a 
difference.  I get results from the analysis query below so I assume it was 
configured properly:
GET /myindex/_analyze?analyzer=my_analyzer

However, it does not seem to make a difference between using my custom 
"my_analyzer" or using "keyword", or even using "index" : "not_analyzed". 
 In each case, if I search for "red" I get back all results when in fact I 
only want 1.

Perhaps my query is the problem?

On Wednesday, October 29, 2014 8:17:40 PM UTC-4, Mike Maddox wrote:
>
> Actually, change it to "index": "not_analyzed" as shown in the JSON.
>
> On Wednesday, October 29, 2014 5:13:46 PM UTC-7, Mike Maddox wrote:
>>
>> Actually, there are two problems here. Change the analyzer to the name of 
>> your custom analyzer and you are missing a curly brace to close out the 
>> "settings" property. Not sure why it doesn't cause an error but it 
>> definitely doesn't create a mapping. You can check if there is a mapping by 
>> looking at: http://localhost:9200/myindex/_mapping
>>
>> Here is how it should be:
>>
>>
>> {
>>   "settings": {
>>     "analysis": {
>>       "analyzer": {
>>         "my_analyzer": {
>>           "type": "custom",
>>           "tokenizer": "keyword",
>>           "lowercase": true
>>         }
>>       }
>>     }
>>   },
>>   "mappings": {
>>     "episode": {
>>       "_source": {
>>         "enabled": false
>>       },
>>       "properties": {
>>         "color": {
>>           "type": "string",
>>           "index": "not_analyzed"
>>         }
>>       }
>>     }
>>   }
>> }
>>
>> On Wednesday, October 29, 2014 2:38:36 PM UTC-7, Jarrod C wrote:
>>>
>>> Hello, I am trying to run a query that distinguishes between spaces in 
>>> values.  Let's say I have a field called 'color' in my index.  Record 1 has 
>>> "color" : "metallic red" whereas Record 2 has "color": "metallic" 
>>>
>>> I want to search for 'metallic' but NOT retrieve 'metallic red', and a 
>>> search for 'metallic red' should not return 'red'.  
>>>
>>> The query below works for 'metallic red' but entering 'red' returns both 
>>> records.  The query also appears to be bypassing Analyzers specified in the 
>>> mappings (such as keyword) as they have no affect.  What should I change it 
>>> to instead?
>>>
>>> //Query
>>> GET /myindex/_search
>>> {
>>>    "query": {
>>>        "match_phrase": {
>>>           "color": "metallic red"
>>>        }   
>>>    }
>>> }
>>>
>>> //Data
>>> { "index" : { "_index" : "myindex", "_type" : "car", "_id" : "1" } }
>>> { "color" : "metallic red" }
>>> { "index" : { "_index" : "myindex", "_type" : "car", "_id" : "2" } }
>>> { "color" : "Metallic RED"}
>>> { "index" : { "_index" : "myindex", "_type" : "car", "_id" : "3" } }
>>> { "color" : "rEd" }
>>>
>>> //Mapping (no effect for query)
>>> curl -XPUT 'http://localhost:9200/myindex/' -d '{
>>>     "settings" : {
>>>       "analysis": {
>>>             "analyzer": {
>>>               "my_analyzer":{
>>>                         "type": "custom",
>>>                         "tokenizer" : "keyword",
>>>                         "lowercase" : true
>>>                     }
>>>             }
>>>     },
>>>     "mappings" : {
>>>         "episode" : {
>>>             "_source" : { "enabled" : false },
>>>             "properties" : {
>>>                 "color" : { "type" : "string", "analyzer" : 
>>> "not_analyzed" }
>>>             }
>>>         }
>>>     }
>>> }
>>> }'
>>>
>>>
>>> Thanks!
>>>
>>

-- 
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/695fa623-c228-4026-a296-1fe9266294c1%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to