ElasticSearchにいくつかのクエリを実行し、キーワードでドキュメントを取得します(コードまたは内部IDで一致させます)。私は本当にそれらのクエリのスコアリングについて気にしないで、ドキュメントを取得するだけです。スコアリングを気にしない場合は、ElasticSearchクエリでconstant_scoreの方が速いのですか?
私がconstant_scoreフィルタで使用するboolクエリをラップすると、パフォーマンスが向上するのでしょうか、それとも意味をなさないでしょうか?
ElasticSearchにいくつかのクエリを実行し、キーワードでドキュメントを取得します(コードまたは内部IDで一致させます)。私は本当にそれらのクエリのスコアリングについて気にしないで、ドキュメントを取得するだけです。スコアリングを気にしない場合は、ElasticSearchクエリでconstant_scoreの方が速いのですか?
私がconstant_scoreフィルタで使用するboolクエリをラップすると、パフォーマンスが向上するのでしょうか、それとも意味をなさないでしょうか?
意味がありません。 boolクエリを使用している場合は、それらにフィルタを適用できます。
GET /_search
{
"query": {
"bool": {
"must": [
{ "match": { "title": "Search" }},
{ "match": { "content": "Elasticsearch" }}
],
"filter": [
{ "term": { "status": "published" }},
{ "range": { "publish_date": { "gte": "2015-01-01" }}}
]
}
}
}
フィルタ - 句(クエリ)が一致するドキュメントに表示されなければなりません。ただし、クエリのスコアを無視する必要はありません。フィルタ句はフィルタコンテキストで実行されます。つまり、スコアリングは無視され、句はキャッシュ用に考慮されます。
さらに一致する場合はconstant_score
を使用して一致する場合は、スコアに「boost
」という値を適用します。
要約する:フィルタと、彼は、あなたがまた `フィルタに` must`一部から `match`クエリを移動することができ、得点を気にしない場合は、
スコア必要constant_scoreのためのフィルタを使用しますクエリはスコアリングされるので、 '部分。 – Val
@Valここでは、ドキュメントからクエリをコピーして、どのように実行できるかを示しています。そしてはい、スコアリングを必要としないものはフィルタリングに行きます –
@VolodymyrBilyachatパフォーマンスの観点からは、スコアリングを気にしなければ、フィルタをマッチさせる方が良いでしょうか? –