We ran into a problem with a slow query.  Turns out having a has_child (or 
has_parent) query in the "filter" part of a "filtered" query is a lot 
slower than having the same has_child filter in the "query" part of the 
"filtered" query.

The faster of the two queries runs in under 100ms, while the slower one 
takes 250-300ms.  I don't understand why these would have different run 
times, any ideas?

The index is around 2GB. The child with about 600,000 docs, the parent with 
about 3,000,000 docs.

These are the two queries:

Slower:

"query": {
    "filtered": {
      "filter": {
        "and": {
          "filters": [
            {
              "range": {
                "price": {
                  "gt": "0"
                }
              }
            },
            {
              "has_parent": {
                "type": "product",
                "query": {
                  "match_all": {}
                }
              }
            }
          ]
        }
      }
    }
  }

Faster:

"query": {
    "filtered": {
      "query": {
        "has_parent": {
          "type": "product",
          "query": {
            "match_all": {}
          }
        }
      },
      "filter": {
        "and": {
          "filters": [
            {
              "range": {
                "price": {
                  "gt": "0"
                }
              }
            }
          ]
        }
      }
    }
  }

-- 
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/d811bca1-9798-49c5-b1f6-79cb5857f547%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to