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.
