Currently I encountered a weird issue: when I sort based on a field, it throws out an exception:
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)->cache(_type:p)],from[0],size[10],sort[<custom:\"_script\": org.elasticsearch.search.sort.ScriptSortParser$2@7ac5f844>!]: 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)->cache(_type:p)],from[0],size[10],sort[<custom:\"_script\": org.elasticsearch.search.sort.ScriptSortParser$2@12127900>!]: 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)->cache(_type:p)],from[0],size[10],sort[<custom:\"_script\": org.elasticsearch.search.sort.ScriptSortParser$2@5b2e7754>!]: 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)->cache(_type:p)],from[0],size[10],sort[<custom:\"_script\": org.elasticsearch.search.sort.ScriptSortParser$2@5dd9cdc1>!]: 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" : [ ]
}
}
However when I remove the sort part, it works perfectly:
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}
} ]
}
}
I followed the guideline from here, but seems it does not work.
The mapping is:
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"
}
}
}
}
}
}
And the elasticsearch version is: ./elasticsearch -v Version: 1.4.1, Build: 89d3241/2014-11-26T15:49:29Z, JVM: 1.7.0_55
Any ideas?
Thanks!
This is an issue with shell. You need to escape the singe quotes. The query should look like -
curl -XPOST 'http://localhost:9200/pb/p/_search' -d '{
"query": {
"match": {
"first_name": "john"
}
},
"sort": {
"_script": {
"script": "doc['"'"'dob_size'"'"'].value * factor1",
"type": "number",
"params": {
"factor1": 1
},
"order": "desc"
}
}
}'
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With