ES基本クエリー構文

3740 ワード

1.termは、主に数値、日付、ブール値、not_などの値を正確に一致させるために使用されます.analyzedの文字列(分析されていないテキストデータ型):
{ “term”: { “age”: 26 }}
2.termsはtermと少し似ていますが、termsでは複数の一致条件を指定できます.フィールドに複数の値が指定されている場合は、ドキュメントを一致させる必要があります.
{ “terms”: { “tag”: [ “search”, “full_text”, “nosql” ] } }
3.rangeフィルタリングでは、指定した範囲でデータを検索できます.
{ “range”: { “age”: { “gte”: 20, “lt”: 30 } } }
4.existsおよびmissingフィルタは、ドキュメントに指定されたフィールドが含まれているか、またはSQL文のIS_と同様のフィールドがないかを検索するために使用できます.NULL条件
{ “exists”: { “field”: “title” } }
この2つのフィルタリングは、すでに検出されたデータに対してのみ使用されますが、フィールドが存在するかどうかを区別したい場合に使用されます.
5.boolフィルタは、オペレータを含む複数のフィルタ条件クエリの結果を集計するために使用できるブールロジックです.
must::複数のクエリー条件の完全な一致はandに相当します.must_not::複数のクエリー条件の逆一致.notに相当します.should::少なくとも1つのクエリー条件が一致し、orに相当します.should句(クエリー)は、一致するドキュメントに表示されます.boolクエリーがクエリーコンテキストにあり、mustor filter句がある場合、boolはshouldクエリーが一致しなくても、ドキュメントはクエリーに一致します.この場合、これらの条項はスコアに影響を与えるためにのみ使用されます.boolクエリーがフィルタコンテキストであるか、または両方が存在しない場合、mustまたはfilterの少なくとも1つのshouldクエリーがboolクエリーと一致するには、ドキュメントと一致する必要があります.この動作はminimum_を設定することでshould_matchパラメータで明示的に制御します.これらのパラメータは、フィルタ条件またはフィルタ条件の配列をそれぞれ継承できます.
{ “bool”: { “must”: { “term”: { “folder”: “inbox” }}, “must_not”: { “term”: { “tag”: “spam” }}, “should”: [ { “term”: { “starred”: true }}, { “term”: { “unread”: true }} ] } }
6.match_allクエリーは、すべてのドキュメントにクエリーできます.クエリー条件のないデフォルトの文です.
{ “match_all”: {} }
このクエリは、フィルタ条件のマージによく使用されます.例えば、すべてのメールボックスを検索する必要があります.すべてのドキュメントの関連性は同じです.scoreは1.
7.matchクエリーは標準クエリーで、全文クエリーが必要でも正確なクエリーが必要でも基本的に使用されます.
matchを使用して全文をクエリーする場合は、実際のクエリーの前に分析器でmatchを分析してクエリー文字を分析します.
{ “match”: { “tweet”: “About Search” } }
matchで正確な値を指定した場合、数値、日付、ブール値、またはnot_analyzedの文字列は、指定した値を検索します.
{ “match”: { “age”: 26 }} { “match”: { “date”: “2014-09-01” }} { “match”: { “public”: true }} { “match”: { “tag”: “full_text” }}
ヒント:正確な一致検索を行う場合は、フィルタ文を使用したほうがいいです.フィルタ文はデータをキャッシュできるからです.
matchクエリは、正確なフィールドを指定した正確な値のみを検索できます.文法エラーを回避するために、正しいフィールド名を指定します.
8.multi_matchクエリーでは、matchクエリーに基づいて複数のフィールドを同時に検索し、複数のフィールドで同時に1つを検索できます.
{ “multi_match”: { “query”: “full text search”, “fields”: [ “title”, “body” ] } }
9.boolクエリはboolフィルタと同様に、複数のクエリ句をマージするために使用されます.異なる点は、boolフィルタリングがマッチングに成功したかどうかを直接与えることができ、boolクエリは各クエリの句の_を計算します.score(相関スコア).
must::クエリー指定ドキュメントは必ず含まれます.must_not::クエリー指定ドキュメントは含まれないでください.should::指定されたドキュメントをクエリーし、ドキュメントの関連性を加算できます.次のクエリでは、titleフィールドに「how to make millions」が含まれており、「tag」フィールドにspamとマークされていません.「starred」と表示されているか、2014年までに発行されている場合、これらの一致するドキュメントは、同じWebサイトよりも等級が高くなります.
{ “bool”: { “must”: { “match”: { “title”: “how to make millions” }}, “must_not”: { “match”: { “tag”: “spam” }}, “should”: [ { “match”: { “tag”: “starred” }}, { “range”: { “date”: { “gte”: “2014-01-01” }}} ] } }
ヒント:boolクエリにmust句がない場合は、少なくともshould句があるはずです.ただしmust句があればshould句がなくてもクエリーできます.
10.フレーズマッチング(Phrase Matching)隣接するいくつかの単語を探す必要がある場合、match_を使用します.phraseクエリー:
GET/my_index/my_type/_search{"query":{"match_phrase":{"title":"quick brown fox"}}とmatchクエリは似ています.match_phraseクエリは、まずクエリ文字列を解析して単語リストを生成します.その後、すべての語句が検索されますが、すべての検索語句を含むドキュメントのみが保持され、語句の位置が隣接します.フレーズquick foxに対するクエリーは、隣接するquickとboxの単語が含まれていないため、私たちのドキュメントと一致しません.match_phraseクエリーは、phraseタイプのmatchクエリーとして書くこともできます.
“match”: { “title”: { “query”: “quick brown fox”, “type”: “phrase” } }
11.constant_score:通常、正確な値を検索するときは、クエリーのスコア計算を望んでいません.ドキュメントを含む計算または除外する計算のみを行うため、constant_を使用します.scoreクエリは、termクエリを非スコアモードで実行し、統合スコアとして1つを使用します.
最終的な組み合わせの結果はconstant_scoreクエリtermクエリを含むクエリ:
GET/my_store/products/_search { “query” : { “constant_score” : {
        "filter" : {
            "term" : { 
                "price" : 20
            }
        }
    }
}

}