title: elasticsearch sort error using script
body: <p>Currently I encountered a weird issue: when I sort based on a field, it throws out an exception:</p>
  
  <pre><code>curl -XGET 'http://localhost:9200/pb/p/_search?pretty' -d '{
  "query": {"match" : {"first_name" : "john"}},
  "sort" : {
    "_script" : {
        "script" : "doc['dob_size'].value * factor1",
        "type"   : "number",
        "params" : {"factor1" : 1},
        "order"  : "desc" 
  }}}'
  {
    "took" : 5,
    "timed_out" : false,
    "_shards" : {
      "total" : 5,
      "successful" : 1,
      "failed" : 4,
      "failures" : [ {
        "index" : "pb",
        "shard" : 0,
        "status" : 500,
        "reason" : "QueryPhaseExecutionException[[pb][0]: query[filtered(first_name:john)-&gt;cache(_type:p)],from[0],size[10],sort[&lt;custom:\"_script\": org.elasticsearch.search.sort.ScriptSortParser$2@7ac5f844&gt;!]: Query Failed [Failed to execute main query]]; nested: GroovyScriptExecutionException[MissingPropertyException[No such property: dob_size for class: Script132]]; "
      }, {
        "index" : "pb",
        "shard" : 2,
        "status" : 500,
        "reason" : "QueryPhaseExecutionException[[pb][2]: query[filtered(first_name:john)-&gt;cache(_type:p)],from[0],size[10],sort[&lt;custom:\"_script\": org.elasticsearch.search.sort.ScriptSortParser$2@12127900&gt;!]: Query Failed [Failed to execute main query]]; nested: GroovyScriptExecutionException[MissingPropertyException[No such property: dob_size for class: Script132]]; "
      }, {
        "index" : "pb",
        "shard" : 3,
        "status" : 500,
        "reason" : "QueryPhaseExecutionException[[pb][3]: query[filtered(first_name:john)-&gt;cache(_type:p)],from[0],size[10],sort[&lt;custom:\"_script\": org.elasticsearch.search.sort.ScriptSortParser$2@5b2e7754&gt;!]: Query Failed [Failed to execute main query]]; nested: GroovyScriptExecutionException[MissingPropertyException[No such property: dob_size for class: Script132]]; "
      }, {
        "index" : "pb",
        "shard" : 4,
        "status" : 500,
        "reason" : "QueryPhaseExecutionException[[pb][4]: query[filtered(first_name:john)-&gt;cache(_type:p)],from[0],size[10],sort[&lt;custom:\"_script\": org.elasticsearch.search.sort.ScriptSortParser$2@5dd9cdc1&gt;!]: Query Failed [Failed to execute main query]]; nested: GroovyScriptExecutionException[MissingPropertyException[No such property: dob_size for class: Script132]]; "
      } ]
    },
    "hits" : {
      "total" : 0,
      "max_score" : null,
      "hits" : [ ]
    }
  }
  </code></pre>
  
  <p>However when I remove the sort part, it works perfectly:</p>
  
  <pre><code>curl -XGET 'http://localhost:9200/pb/p/_search?pretty' -d '{
  "query": {"match" : {"first_name" : "john"}}}'
  {
    "took" : 3,
    "timed_out" : false,
    "_shards" : {
      "total" : 5,
      "successful" : 5,
      "failed" : 0
    },
    "hits" : {
      "total" : 4,
      "max_score" : 0.30685282,
      "hits" : [ {
        "_index" : "pb",
        "_type" : "p",
        "_id" : "4",
        "_score" : 0.30685282,
        "_source":{
  "first_name" : ["john", "jon"],
  "last_name" : "abcdef",
  "location_size": 3,
  "relative_size": 3,
  "dob_size"     : 1}
      }, {
        "_index" : "pb",
        "_type" : "p",
        "_id" : "1",
        "_score" : 0.30685282,
        "_source":{
  "first_name" : ["john", "jon"],
  "last_name" : "abcdef",
  "location_size": 5,
  "relative_size": 3,
  "dob_size"     : 1}
      }, {
        "_index" : "pb",
        "_type" : "p",
        "_id" : "2",
        "_score" : 0.30685282,
        "_source":{
  "first_name" : ["john", "jon"],
  "last_name" : "abcdef",
  "location_size": 5,
  "relative_size": 4,
  "dob_size"     : 0}
      }, {
        "_index" : "pb",
        "_type" : "p",
        "_id" : "3",
        "_score" : 0.30685282,
        "_source":{
  "first_name" : ["john", "jon"],
  "last_name" : "abcdef",
  "location_size": 5,
  "relative_size": 4,
  "dob_size"     : 1}
      } ]
    }
  }
  </code></pre>
  
  <p>I followed the guideline from <a href="http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-sort.html" rel="nofollow">here</a>, but seems it does not work.</p>
  
  <p>The mapping is:</p>
  
  <pre><code>curl -XGET 'http://localhost:9200/pb/p/_mapping?pretty'
  {
    "pb" : {
      "mappings" : {
        "p" : {
          "properties" : {
            "dob_size" : {
              "type" : "integer"
            },
            "first_name" : {
              "type" : "string",
              "index" : "not_analyzed"
            },
            "last_name" : {
              "type" : "string",
              "index" : "not_analyzed"
            },
            "location_size" : {
              "type" : "integer"
            },
            "relative_size" : {
              "type" : "integer"
            }
          }
        }
      }
    }
  }
  </code></pre>
  
  <p>And the elasticsearch version is: ./elasticsearch -v
  Version: 1.4.1, Build: 89d3241/2014-11-26T15:49:29Z, JVM: 1.7.0_55</p>
  
  <p>Any ideas?</p>
  
  <p>Thanks!</p>