Rédiger et exécuter une requête de recherche de termes et/ou de phrases dans un ou plusieurs champs d'un index

Cheat Sheet

PUT /shakespeare
{
 "mappings": {
   "properties": {
    "speaker": {"type": "keyword"},
    "play_name": {"type": "keyword"},
    "line_id": {"type": "integer"},
    "speech_number": {"type": "integer"}
   }
 }
}


curl -H 'Content-Type: application/x-ndjson' -XPOST 'localhost:9200/bank/account/_bulk?pretty' --data-binary @accounts.json
curl -H 'Content-Type: application/x-ndjson' -XPOST 'localhost:9200/shakespeare/doc/_bulk?pretty' --data-binary @shakespeare_6.0.json


GET _cat/nodes?v

GET _cat/indices?v

### Recherche plusieurs terms (match)
GET _search
{
    "query": {
        "match": {
            "text_entry": "to be or not to be"
        }
    }
}

### Recherche une phrase en entière (match phrase)
GET _search
{
    "query": {
        "match_phrase": {
            "text_entry": "to be or not to be"
        }
    }
}

### Recherche un term dans un champs spécifique (multi match)
GET _search
{
    "query": {
        "multi_match": {
            "query": "Crime",
            "fields": ["text_entry", "relatedContent.og:description"]
        }
    }
}

### Recherche plusieurs terms dans un champs spécifique (query string)
GET _search
{
    "query": {
        "query_string": {
            "default_field": "text_entry",
            "query": "(romeo AND juliet) OR (mother AND father)"
        }
    }
}


### Recherche un term dans un champs spécifique sans utiliser un analyseur de texte (term)
GET _search
{
    "query": {
        "term": {
            "speaker": {
                "value": "ROMEO"
            }
        }
    }
}


### Recherche plusieurs terms dans un champs spécifique sans utiliser un analyseur de texte (terms)
GET _search
{
    "query": {
        "terms": {
            "speaker": [
                "ROMEO",
                "JUILIET",
                "HAMLET"
            ]
        }
    }
}

### Recherche une valeur entre 40 et 50 dans un champs spécifique (range)
GET _search
{
    "query": {
        "range": {
            "age": {
                "gte": 40,
                "lt": 50
            }
        }
    }
}

### Recherche une valeur wildcard dans un champs spécifique (wildcard)
GET _search
{
    "query": {
        "wildcard": {
            "city.keyword": {
                "value": "*ville"
            }
        }
    }
}

### Recherche une valeur avec une regex dans un champs spécifique (regex)
GET _search
{
    "query": {
        "regex": {
            "email.keyword": ".*@xurban\\.com"
        }
    }
}