I am trying to figure if/how it is possible to craft a specific query using 
nested objects: 

For example, given a simple author with nested books mapping:

{
  "author":{
    "properties" : {
      "name" : { "type" : "string" },
      "books" : {
        "type" : "nested",
        "properties" : {
          "title" : { "type" : "string" },
          "category" :  { "type" : "string", "index" : "not_analyzed" }
        }
      }
    }
  }
}

Is it possible to craft queries to answer these kind of questions:

1) - "how many authors wrote books in N specific categories" (ie how many 
wrote in both "travel" and "nonfiction")

2) - "how many authors wrote books in exactly N different categories" (ie 
how many wrote in 2 different categorites whichever they are)

3) - "how many authors wrote books in N or more different categories"

and more generally:

4) - "what is the distribution of authors that wrote books in only 1 
category, in exacly 2 different categories, ..., N different categories"

Given a query for 2) we could express 4) programmatically by iterating for 
1, 2, ..., N


For 1) this is working for me:

{
  "query" : {
    "filtered" : {
      "query" : {
        "match_all": {}
      },
      "filter" : {
        "and" : [
          {
            "nested" : {
              "path" : "books",
              "query" : {
                "filtered" : {
                  "filter" : {
                    "term" : {
                      "books.category" : "travel"
                    }
                  }
                }
              }
            }
          },
          {
            "nested" : {
              "path" : "books",
              "query" : {
                "filtered" : {
                  "filter" : {
                    "term" : {
                      "books.category" : "nonfiction"
                    }
                  }
                }
              }
            }
          }
        ]
      }
    }
  }  
}

Any ideas on how we could approach this for 2) 3) and 4) ?

Thanks,
Colin 

-- 
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 elasticsearch+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elasticsearch/3fba046c-98b4-4b46-9232-7058fd7ce6c8%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to