Has_child in facet?


(Matt Paul-2) #1

Hi,

Very new to elasticsearch, but also very impressed (coming from using
FAST ESP). One question that I've come up to, is that I'm trying to
determine if it's possible to use a has_child (either filter or query)
in a facet?


(Shay Banon) #2

It should be possible, never tested it though (use has_child filter as a facet filter). Note that has_child filter can be expensive, so it might make more sense to redesign the doc structure.
On Friday, February 25, 2011 at 4:35 AM, Matt Paul wrote:

Hi,

Very new to elasticsearch, but also very impressed (coming from using
FAST ESP). One question that I've come up to, is that I'm trying to
determine if it's possible to use a has_child (either filter or query)
in a facet?


(Matt Paul-2) #3

Thanks for the quick reply! The child structure contains often updated
fields (and the parent can potentially have large text blocks,
sometimes multi-meg), so I figured that putting the those fields that
change in a child document would keep the majority of the data from
having to be reindexed on updates (like I said, I'm new, but I thought
that was the basic intent of parent/child?). Anyway, here's what I'm
trying to do, and the error I'm getting (matchall on the query part
only for the example):

curl -XPOST "http://localhost:9200/1861_active/_search?pretty=true" -
d
'{"query" : {
"matchAll" : {}},
"facets" : {
"results" : {
"filter" : {
"has_child" : {
"type" : "results",
"query" : {
"term" : {"rsvb" : "1"}
}
}
}
}
}
}'

here's the error:

{
"error" : "SearchPhaseExecutionException[Failed to execute phase
[query], total failure; shardFailures {[a0-heKheQqytwK2yhJD3tQ]
[1861_30c77ae1ebe541dbbab4740121d1c76a][0]:
QueryPhaseExecutionException[[1861_30c77ae1ebe541dbbab4740121d1c76a]
[0]: query[ConstantScore(:)],from[0],size[10]: Query Failed [Failed
to execute main query]]; nested: }{[a0-heKheQqytwK2yhJD3tQ]
[1861_30c77ae1ebe541dbbab4740121d1c76a][1]:
QueryPhaseExecutionException[[1861_30c77ae1ebe541dbbab4740121d1c76a]
[1]: query[ConstantScore(:)],from[0],size[10]: Query Failed [Failed
to execute main query]]; nested: }{[a0-heKheQqytwK2yhJD3tQ]
[1861_30c77ae1ebe541dbbab4740121d1c76a][2]:
QueryPhaseExecutionException[[1861_30c77ae1ebe541dbbab4740121d1c76a]
[2]: query[ConstantScore(:)],from[0],size[10]: Query Failed [Failed
to execute main query]]; nested: }{[a0-heKheQqytwK2yhJD3tQ]
[1861_30c77ae1ebe541dbbab4740121d1c76a][3]:
QueryPhaseExecutionException[[1861_30c77ae1ebe541dbbab4740121d1c76a]
[3]: query[ConstantScore(:)],from[0],size[10]: Query Failed [Failed
to execute main query]]; nested: }{[a0-heKheQqytwK2yhJD3tQ]
[1861_30c77ae1ebe541dbbab4740121d1c76a][4]:
QueryPhaseExecutionException[[1861_30c77ae1ebe541dbbab4740121d1c76a]
[4]: query[ConstantScore(:)],from[0],size[10]: Query Failed [Failed
to execute main query]]; nested: }]",
"status" : 500

and here's what's in the child (results):

curl -XPOST "http://localhost:9200/1861_active/results/_search?
pretty=true" -d '{"query" : { "matchAll" : {}}}'
{
"took" : 3,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
},
"hits" : {
"total" : 2,
"max_score" : 1.0,
"hits" : [ {
"_index" : "1861_30c77ae1ebe541dbbab4740121d1c76a",
"_type" : "results",
"_id" : "8231e9f27b0c46bcb3a51144a260dd80:81",
"_score" : 1.0, "_source" : { "rsvb" : 81, "rsvt" :
1298513264000, "_id" : "8231e9f27b0c46bcb3a51144a260dd80:81",
"_parent" : "8231e9f27b0c46bcb3a51144a260dd80:81" }
}, {
"_index" : "1861_30c77ae1ebe541dbbab4740121d1c76a",
"_type" : "results",
"_id" : "638004ea46d6454b947bff9d6878c342:81",
"_score" : 1.0, "_source" : { "rsvb" : 81, "rsvt" :
1298573507000, "_id" : "638004ea46d6454b947bff9d6878c342:81",
"_parent" : "638004ea46d6454b947bff9d6878c342:81" }
} ]
}

Not quite sure what I'm doing wrong?


(Matt Paul-2) #4

Probably should also include, here's what an insert on the child table
looks like (using bulk inserts):

{ "index" : { "_index" : "1861_active", "_type" : "results", "_id" :
"8a08dfb3af854f07b72b04b977f27f2a:81", "_parent" :
"8a08dfb3af854f07b72b04b977f27f2a:81" } }
{ "rsvb" : 81, "rsvt" : 1298602356000, "_id" :
"8a08dfb3af854f07b72b04b977f27f2a:81", "_parent" :
"8a08dfb3af854f07b72b04b977f27f2a:81" }


(Matt Paul-2) #5

Additionally, here's the insert on the child (bulk insert):
{ "index" : { "_index" : "1861_active", "_type" : "results", "_id" :
"8a08dfb3af854f07b72b04b977f27f2a:81", "_parent" :
"8a08dfb3af854f07b72b04b977f27f2a:81" } }
{ "rsvb" : 81, "rsvt" : 1298602356000, "_id" :
"8a08dfb3af854f07b72b04b977f27f2a:81", "_parent" :
"8a08dfb3af854f07b72b04b977f27f2a:81" }


(Shay Banon) #6

Can you create a recreation based on http://elasticsearch.org/help?
On Friday, February 25, 2011 at 4:56 AM, Matt Paul wrote:

Additionally, here's the insert on the child (bulk insert):
{ "index" : { "_index" : "1861_active", "_type" : "results", "_id" :
"8a08dfb3af854f07b72b04b977f27f2a:81", "_parent" :
"8a08dfb3af854f07b72b04b977f27f2a:81" } }
{ "rsvb" : 81, "rsvt" : 1298602356000, "_id" :
"8a08dfb3af854f07b72b04b977f27f2a:81", "_parent" :
"8a08dfb3af854f07b72b04b977f27f2a:81" }


(Matt Paul-2) #7

Shay,

Here you go. While creating this example, I think I found that the culprit
has something to do with the alias I'm creating for the index (it doesn't
error out if I don't use aliasing at all):

curl -XPUT "http://localhost:9200/err_test_real" -d '{ "mappings" :
{ "results" : { "_parent" : { "type" : "doc" }}}}'
curl
-XPUT "http://localhost:9200/err_test_real/doc/8a08dfb3af854f07b72b04b977f27f2a:81"
-d '{ "col" : "some_data", "_id" : "8a08dfb3af854f07b72b04b977f27f2a:81" }'
curl -XPOST "http://localhost:9200/_aliases" -d '{"add" :
{"index" : "err_test_real", "alias" : "err_test"}}'
curl
-XPUT "http://localhost:9200/err_test/results/8a08dfb3af854f07b72b04b977f27f2a:81?parent=8a08dfb3af854f07b72b04b977f27f2a:81"
-d'{ "child_column" :
42, "_id" : "8a08dfb3af854f07b72b04b977f27f2a:81", "_parent" : "8a08dfb3af854f07b72b04b977f27f2a:81"
}'
curl -XPOST "http://localhost:9200/err_test/_refresh"
curl -XPOST "http://localhost:9200/err_test/doc/_search?pretty=true"
-d '{"query" : { "matchAll" : {}}},
"facets" : {
"results" : {
"filter" : {
"has_child" : {
"type" : "results",
"query" : {
"term" : {"child_column" : 42}
}
}
}
}
}'


(Shay Banon) #8

Please gist it.
On Friday, February 25, 2011 at 11:56 PM, purplegherkin@gmail.com wrote:

Shay,

Here you go. While creating this example, I think I found that the culprit has something to do with the alias I'm creating for the index (it doesn't error out if I don't use aliasing at all):

curl -XPUT "http://localhost:9200/err_test_real" -d '{ "mappings" : { "results" : { "_parent" : { "type" : "doc" }}}}'
curl -XPUT "http://localhost:9200/err_test_real/doc/8a08dfb3af854f07b72b04b977f27f2a:81" -d '{ "col" : "some_data", "_id" : "8a08dfb3af854f07b72b04b977f27f2a:81" }'
curl -XPOST "http://localhost:9200/_aliases" -d '{"add" : {"index" : "err_test_real", "alias" : "err_test"}}'
curl -XPUT "http://localhost:9200/err_test/results/8a08dfb3af854f07b72b04b977f27f2a:81?parent=8a08dfb3af854f07b72b04b977f27f2a:81" -d'{ "child_column" : 42, "_id" : "8a08dfb3af854f07b72b04b977f27f2a:81", "_parent" : "8a08dfb3af854f07b72b04b977f27f2a:81" }'
curl -XPOST "http://localhost:9200/err_test/_refresh"
curl -XPOST "http://localhost:9200/err_test/doc/_search?pretty=true" -d '{"query" : { "matchAll" : {}}},
"facets" : {
"results" : {
"filter" : {
"has_child" : {
"type" : "results",
"query" : {
"term" : {"child_column" : 42}
}
}
}
}
}'


(Matt Paul-2) #9

Shay,

Here ya go: git://gist.github.com/847657.git

thanks for taking a look!

Matt


(Matt Paul-2) #10

Sorry, that should have read: https://gist.github.com/847657

On Feb 28, 2011 11:23am, purplegherkin@gmail.com wrote:

Shay,

Here ya go: git://gist.github.com/847657.git

thanks for taking a look!

Matt


(Shay Banon) #11

Heya,

Several problems with the search request (the json is malformed). But, in any case, this did not work properly. Here is a gist of an example of how it should work: https://gist.github.com/848506, and support for that has been pushed to master (https://github.com/elasticsearch/elasticsearch/issues/730).

-shay.banon
On Monday, February 28, 2011 at 11:28 PM, purplegherkin@gmail.com wrote:

Sorry, that should have read: https://gist.github.com/847657

On Feb 28, 2011 11:23am, purplegherkin@gmail.com wrote:

Shay,

Here ya go: git://gist.github.com/847657.git

thanks for taking a look!

Matt


(Matt Paul-2) #12

Thanks Shay, I'll download the update and give it a try!

On Feb 28, 2011 8:49pm, Shay Banon shay.banon@elasticsearch.com wrote:

Heya,

Several problems with the search request (the json is malformed). But, in
any case, this did not work properly. Here is a gist of an example of how
it should work: https://gist.github.com/848506, and support for that has
been pushed to master
(https://github.com/elasticsearch/elasticsearch/issues/730).

-shay.banon

On Monday, February 28, 2011 at 11:28 PM, purplegherkin@gmail.com wrote:

Sorry, that should have read: https://gist.github.com/847657

On Feb 28, 2011 11:23am, purplegherkin@gmail.com wrote:

Shay,

Here ya go: git://gist.github.com/847657.git

thanks for taking a look!

Matt


(Matt Paul-2) #13

Shay,

I just tested it all, works like a champ now, thanks!

Matt


(system) #14