Search code examples
elasticsearchelasticsearch-rails

ElasticsearchIllegalArgumentException[suggester [completion] requires context to be setup]


I am using Elastic Search to implement an autosuggest field for an index called people:

The Mapping is as below for the field person_name_suggest -

person_name_suggest: {
  type: "completion",
  analyzer: "simple",
  payloads: true,
  preserve_separators: true,
  preserve_position_increments: true,
  max_input_length: 50,
  context: {
    office_scope: {
     type: "category",
     path: "office_scope",
     default: [
       "0"
     ]
   }
  }
},

The request that I need to Elastic Search is as follows:

{ 
 "suggest":{
  "suggestions":{
    "text":"M","
    completion":{
     "field":"person_name_suggest",
     "context":890,
     "size":10
    }
   }
 }
}

I get the following error - "error": "SearchPhaseExecutionException[Failed to execute phase [query], all shards failed; shardFailures {[OsbgjmewT569a-7ZoNCMtg][people_2016_10_29][0]: SearchParseException[[people_2016_10_29][0]: from[-1],size[-1]: Parse Failure [Failed to parse source [{"suggest":{"suggestions":{"text":"M","completion":{"field":"person_name_suggest","context":890,"size":10}}}}]]]; nested: ElasticsearchIllegalArgumentException[suggester [completion] requires context to be setup]; }

From what I can see, I have the completion suggester set up right.

Could someone point me in the right direction?

The version of ElasticSearch being used is 1.6


Solution

  • There is a syntax error in query. You have to specify the name of context

    Try this

    { 
     "suggest":{
      "suggestions":{
        "text":"M","
        completion":{
         "field":"person_name_suggest",
         "context":{"office_scope":890},
         "size":10
        }
       }
     }
    }