I have an index with parent documents ( Companies ), that have children (
Files ). Each Company can have hundreds of Files. Companies and Files
both have many fields.
The search I'm trying to perform is the Company that best matches based on
it's own fields and the fields of it's children ( the Files ). The current
query I run is a Bool-Should query where I perform a has_child query on the
files and a regular query on the Companies. I only require a minimum of
one match so, as I understand it, a Company that matches it's own fields
and one of it's children will score higher than a Company that only
matchesit's own fields. You'll see I also have to apply a nuber of filters
to the Companies.
I'm wondering if there is a way to query the system where it will take all
the children into account, and not just one. If ten Files match the query,
then that Company result would likely score higher than a Company that only
had a few files match ... obviously there would be other scoring going on
... so maybe some sort of multiplyer applied to the sum of children scores
would be appropriate. It's defining a query that matches multiple children
that I'm unable to figure out.
Here is an example of the query that I currently use:
{
"query": {
"filtered": {
"filter": {
"and": [
{
"terms": {
"_cache": true,
"execution": "or",
"locations.state": [
"california",
"maryland"
]
}
},
{
"terms": {
"_cache": true,
"execution": "and",
"industries.term.not_analyzed": [
"aerospace",
"defense"
]
}
},
{
"geo_distance": {
"locations.geolocation": {
"lat": "41",
"lon": "-82"
},
"distance": "25mi"
}
}
]
},
"query": {
"bool": {
"should": [
{
"query_string": {
"default_field": "_all",
"query": "adhesive"
}
},
{
"has_child": {
"type": "file",
"query": {
"query_string": {
"default_field": "_all",
"query": "adhesive"
}
}
}
}
],
"minimum_number_should_match": 1
}
}
}
}
}
--
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/261146ca-c994-40d4-a970-6b5d872bb13e%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.