私は2.7Mドキュメントのインデックスを持っています。質問があります:弾性検索クエリ2.7M文書、60ミリ秒。それは大丈夫ですか、それとも速くなるのでしょうか?
GET ad_index/ad_type/_search
{
"size": 20,
"sort": {
"until": "desc"
},
"query": {
"bool": {
"filter": [
{
"term": {
"state": 2
}
},
{
"range": {
"until": {
"gte": "now"
}
}
}
]
}
},
"aggs" : {
"categories": {
"terms": {
"field": "category_id",
"size": 2000
}
}
}
}
このクエリには、サブクエリがありません。 私は1つのシャードと1つのレプリカで1つのノードを持っています。
クエリ時間 - 60 ms。集約なし - 40 ms。 ヒット数〜50000.
これは大丈夫ですか、それとも速くなるのでしょうか?私は10ミリ秒を望む。私は<をMySQLで10ms得ます。
私はES 2.4を使用します。インデックスのサイズは1.34 GBです。私はスコアに興味がありません。
UPD。
マイマップ:
{
"ad_index": {
"mappings": {
"ad_type": {
"properties": {
"customer_id": {
"type": "long"
},
"deleted": {
"type": "long"
},
"dynamic_fields": {
"properties": {
"-icq-3": {
"type": "string"
},
"phone-3": {
"type": "string"
}
"email-3": {
"type": "string"
}
//and 100 more sparse dynamic fields
},
"id": {
"type": "long"
},
"category_id": {
"type": "long"
},
"until": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss"
},
"state": {
"type": "long"
},
"text": {
"type": "string"
}
}
}
}
}
}
その他のクエリ:
GET ad_index/ad_type/_search
{
"size": 20,
"sort": {
"until": "desc"
},
"query": {
"bool": {
"filter": [
{
"term": {
"state": 2
}
},
{
"range": {
"until": {
"gte": "now"
}
}
},
{
"terms": {
"category_id" : [1029, 121, ... here can be more than 200 values]
}
}
]
}
},
"aggs" : {
"categories": {
"terms": {
"field": "category_id",
"size": 2000
}
}
}
}
GET ad_index/ad_type/_search
{
"size": 20,
"sort": {
"until": "desc"
},
"query": {
"bool": {
"must": [
{
"match": {
"_all": "some text"
}
}
],
"filter": [
{
"term": {
"state": 2
}
},
{
"range": {
"until": {
"gte": "now"
}
}
},
{
"terms": {
"category_id" : [1029, 121, ... here can be more than 200 values]
}
}
]
}
},
"aggs" : {
"categories": {
"terms": {
"field": "category_id",
"size": 2000
}
}
}
}
に何が起こっているかを確認するためにクエリをプロフィール
これは問題ありません。私は、1億5000万のドキュメントで10以上のフィルタを使用して、大規模なクエリで40ミリ秒を得るために使用します。ドキュメントのスキーマを貼り付けることができます。また、クエリを調整することができます。あなたは単にドキュメントをフィルタリングしているので。あなたがスコアに興味がない場合は、フィルタをブール型フィルタでフィルタ内に移動し、フィルタ上で_cacheを有効にすることができます(ただし、範囲のフィルタは_cacheには適していません)。シェアマッピング/スキーマやその他のユースケースのクエリ – user3775217
UPDセクションにいくつかの追加情報を掲載 –