Use Elasticsearch synonym filter to retrieving rows with synonym rule defined


I am digging into Elasticsearch for a feasibility study, I would like to
see if elasticsearch's synonym filter could help pick up rows of data that
share similar wording in a column.

I have implemented a simple prototype

  1. I have downloaded accounts.json from
  2. I placed synonym.txt to the config directory under elasticsearch install
    with one line content as following
  3. modified an online example from "Rafat Kuc-3" to as following:
    curl -XPOST 'localhost:9200/bank/account' -d '
    "settings": {
    "index" : {
    "analysis" : {
    "analyzer" : {
    "synonym" : {
    "tokenizer" : "whitespace",
    "filter" : ["synonym"]
    "filter" : {
    "synonym" : {
    "type" : "synonym",
    "synonyms_path" : "synonym.txt"
    "mappings" : {
    "account" : {
    "properties" : {
    "firstname" : { "type" : "string", "index" : "analyzed", "analyzer" :
    "synonym" }

this is successful!

  1. load accounts data with
    curl -XPOST 'localhost:9200/bank/account/_bulk?pretty' --data-binary

this is also successful

Problem I have is: I tried to use elasticsearch/_plugin/head to search
giving account.firstname (query string) equals to "Dale", hope to get back
two rows, with firstname "Dale" and "Dona". But I only get one row back.
Can someone tell me if I am missing anything to have the synonym filter
works correctly?
I see that the pluggin head has a query function such as "fuzzy", and it
returns rows with "Hale" and "Dale", where is the rule defined and how can
I insert my own rule?

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
To view this discussion on the web visit
For more options, visit