EDIT: To add to this, synonyms seem to work with basic querystring queries.
"query_string" : { "default_field" : "location.region.name.raw", "query" : "nh" }
This returns all the results for New Hampshire, but the match query for nh does not return results.
I'm trying to add synonyms to the fields of my location in my Elastic index, so if I do a location search for Mass, Ma, or Massachusetts, I get the same results every time. I added a synonym filter to my settings and changed the display of locations. Here are my settings:
analysis":{ "analyzer":{ "synonyms":{ "filter":[ "lowercase", "synonym_filter" ], "tokenizer": "standard" } }, "filter":{ "synonym_filter":{ "type": "synonym", "synonyms":[ "United States,US,USA,USA=>usa", "Alabama,Al,Ala,Ala", "Alaska,Ak,Alas,Alas", "Arizona,Az,Ariz", "Arkansas,Ar,Ark", "California,Ca,Calif,Cal", "Colorado,Co,Colo,Col", "Connecticut,Ct,Conn", "Deleware,De,Del", "District of Columbia,Dc,Wash Dc,Washington Dc=>Dc", "Florida,Fl,Fla,Flor", "Georgia,Ga", "Hawaii,Hi", "Idaho,Id,Ida", "Illinois,Il,Ill,Ills", "Indiana,In,Ind", "Iowa,Ia,Ioa", "Kansas,Kans,Kan,Ks", "Kentucky,Ky,Ken,Kent", "Louisiana,La", "Maine,Me", "Maryland,Md", "Massachusetts,Ma,Mass", "Michigan,Mi,Mich", "Minnesota,Mn,Minn", "Mississippi,Ms,Miss", "Missouri,Mo", "Montana,Mt,Mont", "Nebraska,Ne,Neb,Nebr", "Nevada,Nv,Nev", "New Hampshire,Nh=>Nh", "New Jersey,Nj=>Nj", "New Mexico,Nm,N Mex,New M=>Nm", "New York,Ny=>Ny", "North Carolina,Nc,N Car=>Nc", "North Dakota,Nd,N Dak, NoDak=>Nd", "Ohio,Oh,O", "Oklahoma,Ok,Okla", "Oregon,Or,Oreg,Ore", "Pennsylvania,Pa,Penn,Penna", "Rhode Island,Ri,Ri & PP,R Isl=>Ri", "South Carolina,Sc,S Car=>Sc", "South Dakota,Sd,S Dak,SoDak=>Sd", "Tennessee,Te,Tenn", "Texas,Tx,Tex", "Utah,Ut", "Vermont,Vt", "Virginia,Va,Virg", "Washington,Wa,Wash,Wn", "West Virginia,Wv,W Va, W Virg=>Wv", "Wisconsin,Wi,Wis,Wisc", "Wyomin,Wi,Wyo" ] } }
And displaying the location.region field:
"region":{ "properties":{ "id":{"type": "long"}, "name":{ "type": "string", "analyzer": "synonyms", "fields":{"raw":{"type": "string", "index": "not_analyzed" }} } } }
But the synonym analyzer does not seem to do anything. This request, for example:
"match" : { "location.region.name" : { "query" : "Massachusetts", "type" : "phrase", "analyzer" : "synonyms" } }
This returns hundreds of results, but if I replace Massachusetts with Ma or Mass, I get 0 results. Why doesn't it work?