Elastic 默認是區分大小寫查詢的,比如:
{ "foo": "BÀR" }
查詢的時候 通過“bar”是查詢不到的,需要在
"settings": { "analysis": { "normalizer": { "my_normalizer": { "type": "custom", "filter": ["lowercase", "asciifolding"] } } } }, "mappings": { "type": { "properties": { "foo": { "type": "keyword", "normalizer": "my_normalizer" } } } }
案例:
PUT /products { "settings": { "analysis": { "normalizer": { "my_normalizer": { "type": "custom", "filter": ["lowercase", "asciifolding"] } } } } } POST /products/doc/_mapping { "_source": {"enabled": true}, "dynamic": true, "properties" : { "id" : {"type" : "text","fields": {"raw": {"type": "keyword","ignore_above": 256}}}, "hash" : {"type" : "text","fields": {"raw": {"type": "keyword","ignore_above": 256}}}, "name" : {"type" : "keyword","doc_values":true,"normalizer": "my_normalizer"}, "type" : {"type" : "keyword","doc_values":true}, "fileids": {"type": "text","fields": {"raw": {"type": "keyword","ignore_above": 256}}}, "createTime": {"type": "date"}, "updateTime": {"type": "date"}, "info" : { "properties":{ "id":{ "type":"text","fields": {"raw": {"type": "keyword","ignore_above": 256}}}, "label":{"type":"keyword","doc_values":true,"normalizer": "my_normalizer"}, "format":{ "type":"keyword","doc_values":true,"normalizer": "my_normalizer"}, "value" : {"type" : "text","fields": {"raw": {"type": "keyword","ignore_above": 256}}} } } } }
這樣就可以解決大小寫的問題。
ES 6.0 官網資料:https://www.elastic.co/guide/en/elasticsearch/reference/6.0/normalizer.html
