Hi everyone.
I'm running elasticsearch-0.9 on the cluster of 5 EC2 instances
(Cluster Compute Quadruple Extra Large Instance) with one of them
configured as frontend (data: false). Index contains 10M of documents,
4 shards, 2 replicas. Total stored size is 23GB and each node has 23
GB of RAM, so it fit's to memory without any problems.
Using JMeter as testing tool I'm getting as little as ~150 requests
per second (that's for 4 worker nodes with 8 CPU cores each). I've
checked with iostat that there's no disk activity on cluster nodes. I
also see CPU utilization near 5-10% on worker nodes during performance
testing. Looks somewhat strange to me.
I made performance measurements on the same cluster when index
contained only 5M documents. I got nearly 1500 requests per second and
CPU utilizations on worker nodes was close to 90%. After importing
another million of documents performance started to degrade very
rapidly.
Could anyone help me with this problem? I'm completely out of ideas
now.
My queries are nothing complex: a single keyword search with a bunch
of filter attached, also faceting by some fields. Typical query looks
like this:
{
"query":
{
"filtered":
{
"query":
{
"query_string":
{
"fields":
[
"keywords.original_keywords^2",
"keywords.keywords"
],
"query": "bright"
}
},
"filter":
{
"and":
{
"filters":
[
{
"term":
{
"content.is_offensive": false
}
},
{
"term":
{
"licenses.extended": true
}
},
{
"term":
{
"image.isolated": false
}
},
{
"term":
{
"content.orientation": "horizontal"
}
},
{
"term":
{
"categories.conceptual.depth2": "793"
}
}
]
}
}
},
"sort": "online.rating",
"facets":
{
"representative_categories":
{
"terms":
{
"field": "categories.representative.depth2",
"size": 100
}
},
"representative_categories":
{
"terms":
{
"field": "categories.conceptual.depth2",
"size": 100
}
},
"licenses":
{
"terms":
{
"field": "licenses.size",
"size": 100
}
},
"prices":
{
"histogram":
{
"field": "prices.min",
"interval": 1
}
}
}
}
}