Jarrod, I understand that you think the analyzer is not the problem. However, the original mapping wasn't correctly formatted so the color type was being analyzed using the default analyzer which would also cause the query to use the default analyzer as well. If you fix the syntax and then change color to use your analyzer it will work. One note, your mapping is also incorrect in that it references the "episode" type when you're actually adding data to the "car" type. Using your analyzer, it would be indexed as one lower case string. Now, your query does make a difference but if you have the analyzer set correctly, it will analyze the input string using the same analyzer that you set in the mapping. You would be better off just doing a term query or filter.
Mike On Thursday, October 30, 2014 8:06:36 AM UTC-7, Jarrod C wrote: > > 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/d3de2cf4-1c3e-4f2f-af11-1bf3931ed54b%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
