Elasticsearch: Find values with and without whitespaces
You need to use edge_ngram along with char_filter, to achieve your use case
Adding a working example
Index Mapping:
{ "settings": { "analysis": { "analyzer": { "my_analyzer": { "tokenizer": "my_tokenizer", "char_filter": [ "replace_whitespace" ] } }, "tokenizer": { "my_tokenizer": { "type": "edge_ngram", "min_gram": 2, "max_gram": 10, "token_chars": [ "letter", "digit" ] } }, "char_filter": { "replace_whitespace": { "type": "mapping", "mappings": [ "\\u0020=>" ] } } } }, "mappings": { "properties": { "articlenumbers": { "type": "text", "fields": { "analyzed": { "type": "text", "analyzer": "my_analyzer" } } } } }}
Index Data:
{ "articlenumbers": "AB 987 g567 323"}
Search Query:
{ "query": { "multi_match": { "query": "AB987g", "fields": [ "articlenumbers", "articlenumbers.analyzed" ] } }}
Search Result:
"hits": [ { "_index": "65936531", "_type": "_doc", "_id": "1", "_score": 1.4384104, "_source": { "articlenumbers": "AB 987 g567 323" } } ]