I've encountered a weird problem that I hope someone has seen before, and can provide a resolution for. I'm running Elasticsearch 1.0 downloaded as an RPM and installed on a cluster of two RedHat nodes. Five shards with one replica each is configured.
Unfortunately, I could not reproduce the problem with test data (yet), even though I tried it for hours. I'm posting my simplified setup with the hope that it helps. # create the index curl -XPUT http://localhost:9200/test_script/ # add mapping for parent type curl -XPUT http://localhost:9200/test_script/my_parent/_mapping -d ' { "my_parent": { "properties": { "name": {"type": "string"} } } }' # add mapping for child type curl -XPUT http://localhost:9200/test_script/my_child/_mapping -d ' { "my_child": { "_parent": {"type": "my_parent"}, "properties": { "value": {"type": "long"} } } }' # index some records curl -XPUT http://localhost:9200/test_script/my_parent/1 -d '{"name": "Parent"}' curl -XPUT http://localhost:9200/test_script/my_parent/2 -d '{"name": "ParentTwo"}' curl -XPUT http://localhost:9200/test_script/my_parent/3 -d '{"name": "ParentThree"}' curl -XPUT http://localhost:9200/test_script/my_child/abc?parent=1 -d '{"value": 1234567}' When I execute the following search (on my real index) curl -XGET http://localhost:9200/test_script/my_parent/_search?pretty=true -d ' { "query": { "filtered": { "filter": { "bool": { "must_not": { "has_child": { "type": "my_child", "filter": { "script": { "script": "doc[\"my_child.value\"].value != 1234567" } } } }, "must": { "script": { "script": "doc[\"my_parent.name\"].value.equals(\"parent\")" } } } } } } }' I get partial results because one of the shards fails with this error "_shards" : { "total" : 5, "successful" : 4, "failed" : 1, "failures" : [ { "index" : "test_script", "shard" : 4, "status" : 500, "reason" : "RemoteTransportException[[host-2][inet[/192.168.0.2:9300]][search/phase/query]]; nested: QueryPhaseExecutionException[[test_script][4]: query[filtered(ConstantScore(BooleanFilter(-CustomQueryWrappingFilter(child_filter[my_child/my_parent](filtered(ConstantScore(ScriptFilter(vid=(String)doc[\"my_child.\"].value; doc[\"my_child.value\"].value != 1234567;)))->cache(_type:my_child))))))->cache(_type:my_parent)],from[0],size[10]: Query Failed [Failed to execute main query]]; nested: PropertyAccessException[[Error: could not access: value; in class: org.elasticsearch.index.fielddata.ScriptDocValues$Empty]\n[Near : {... value ....}]\n ^\n[Line: 1, Column: 1]]; " All fields are dense (i.e. populated in every parent or child record), so the field and the value should be available. It might be helpful to note that the exception always occurs on the other node and not on the one my http request targeted. I never get an error, but receive the correct results, if I change the query to something like this curl -XGET http://localhost:9200/test_script/my_parent/_search?pretty=true -d ' { "query": { "filtered": { "filter": { "bool": { "must_not": { "has_child": { "type": "my_child", "filter": { "script": { "script": "doc[\"my_child.value\"].value != 1234567" } } } }, "must": { * "term": {"my_parent.name": "parent"}* } } } } } }' I appreciate any help you can provide. -- 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 [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/7768222d-a7d7-41e8-bfc9-5dbe0ad13a8e%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
