コピペコードで快適生活

明日使えるソースを自分のために

Elasticsearch クエリメモ

Elasticsearchをたまにしか使わなくて、使う時にはクエリをすっかり忘れているので、メモ書き。

ES_HOSTNAME=https://example.com:9200
ES_INDEX=logstash-yyyy.mm.dd

## インデックス一覧
curl -X GET "${ES_HOSTNAME}/_cat/indices?v"

## エイリアス一覧
curl -X GET "${ES_HOSTNAME}/_aliases?v"

## インデックスの削除 (logstash-yyyy.mm.dd はインデックス名)
curl -XDELETE "${ES_HOSTNAME}/${ES_INDEX}"

## マッピング確認
curl -XGET "${ES_HOSTNAME}/${ES_INDEX}/_mapping?pretty"

## インデックスのレコード数 確認
curl -XGET "${ES_HOSTNAME}/_cat/count/${ES_INDEX}"

## 全件抽出
curl -XGET "${ES_HOSTNAME}/${ES_INDEX}/_search?pretty" -H 'Content-Type: application/json' -d'
{
  "query": { "match_all": {} }
}
'

検索系

## 完全一致検索 (termを使う)
curl -XGET "${ES_HOSTNAME}/${ES_INDEX}/_search?pretty" -d '
{
  "query": {
    "term": {
      "field_name" :"field_value"
    }
  }
}
'

## いずれかが含まれる (termsを使う)
curl -XGET "${ES_HOSTNAME}/${ES_INDEX}/_search?pretty" -d '
{
  "query": {
    "terms": {
      "objects.xxx_id": [1, 2, 3]
    }
  }
}
'

## AND検索 (bool,mustでくくる)
curl -XGET "${ES_HOSTNAME}/${ES_INDEX}/_search?pretty" -d '
{
  "query": {
    "bool": {
      "must": [
        {
          "terms": {
            "objects.xxx_id": [1, 2, 3]
          }
        },
        {
          "term": {
            "yyy_id": 100
          }
        }
      ]
    }
  }
}
'