Elasticsearchでインデックスドキュメントを検索する6つの方法

クエリ文字列検索

HTTPリクエストのクエリ文字列にパラメータを含める形式です。一時的な検索に適しています。


curl -XGET 'http://localhost:9301/book_shop/it_book/_search?q=タイトル:Java&sort=価格:desc'

例: 商品名に「Java」が含まれるすべての商品を取得します。


http://172.16.22.133:9301/book_shop/it_book/_search?q=タイトル:Java

レスポンス例


{
    "時間": 8,
    "タイムアウト": false,
    "_シャード": {
        "合計": 5,
        "成功": 5,
        "スキップ": 0,
        "失敗": 0
    },
    "ヒット": {
        "合計": 3,
        "最大スコア": 1,
        "ヒット": [
            {
                "_インデックス": "book_shop",
                "_タイプ": "it_book",
                "_ID": "2",
                "_スコア": 1,
                "_ソース": {
                    "タイトル": "Java仮想マシンの詳細な理解:JVM高度な特性とベストプラクティス",
                    "著者": "周志明",
                    "カテゴリ": "プログラミング言語",
                    "説明": "Java書籍分野で広く認められている古典的著作",
                    "価格": 79,
                    "日付": "2013-10-01",
                    "出版社": "機械工業出版社",
                    "タグ": [
                        "Java",
                        "仮想マシン",
                        "ベストプラクティス"
                    ]
                }
            }
        ]
    }
}

Query DSLを使用した検索

JSON形式のデータを使用して、複雑な検索を作成できます。

全商品を検索


POST /book_shop/it_book/_search
{
    "クエリ": { "一致_全て": {} }
}

タイトルに「Java」が含まれる商品を価格順に並べ替え


POST /book_shop/it_book/_search
{
    "クエリ": {
        "一致": {
            "タイトル": "Java"
        }
    },
    "ソート": [
        { "価格": {"注文": "降順"} }
    ]
}

ページネーションによる商品検索 - 各ページ1件表示、3ページ目


POST /book_shop/it_book/_search
{
    "クエリ": { "一致_全て": {} },
    "開始位置": 2,
    "サイズ": 1
}

商品のタイトルと価格のみを取得


POST /book_shop/it_book/_search
{
    "クエリ": { "一致_全て": {} },
    "_ソース": ["タイトル", "価格"]
}

フィルター検索

タイトルに「Java」が含まれ、かつ価格が80円以下の商品を検索します。


POST /book_shop/it_book/_search
{
    "クエリ": {
        "論理組み合わせ": {
            "必須": {
                "一致": {"タイトル": "Java"}
            },
            "フィルター": {
                "範囲": {
                    "価格": {"最大値以下": 80.0}
                }
            }
        }
    }
}

全文検索

説明欄に「Java書籍」というフレーズが含まれる商品を検索し、タイトルと説明を表示します。


POST /book_shop/it_book/_search
{
    "クエリ": {
        "一致": {"説明": "Java書籍"}
    },
    "_ソース": ["タイトル", "説明"]
}

フレーズ検索

説明欄に完全一致する「Java書籍」を持つ商品を検索します。


POST /book_shop/it_book/_search
{
    "クエリ": {
        "一致_フレーズ": {
            "説明": "Java書籍"
        }
    },
    "_ソース": ["タイトル", "説明"]
}

ハイライト検索

説明欄に「Java書籍」というフレーズが含まれる商品をページネーション付きで検索し、結果をハイライト表示します。


POST /book_shop/it_book/_search
{
    "クエリ": {
        "一致": {"説明": "Java書籍"}
    },
    "開始位置": 0,
    "サイズ": 1,
    "ハイライト": {
        "フィールド": {"説明": {}}
    },
    "_ソース": ["タイトル", "説明"]
}

タグ: Elasticsearch QueryDSL FullTextSearch

7月7日 21:30 投稿