這一切都取決於您正在使用的查詢的類型。如果該類型將使用字段本身的分析器來分析輸入字符串,那麼它應該沒問題。
如果您使用的是regexp
查詢,則此查詢不會分析輸入字符串,因此如果您將app.*
傳遞給它,它將保持不變,這將用於搜索。
但是,如果你使用正確的query_string
查詢一個應該工作:
{
"settings": {
"analysis": {
"analyzer": {
"my": {
"type": "custom",
"tokenizer": "standard",
"filter": [
"uppercase"
]
}
}
}
},
"mappings": {
"test": {
"properties": {
"some_field": {
"type": "text",
"analyzer": "my"
}
}
}
}
}
和查詢本身:
{
"query": {
"query_string": {
"query": "some_field:app*"
}
}
}
,以確保它在做什麼,我覺得是,我總是用_validate
api:
GET /_validate/query?explain&index=test
{
"query": {
"query_string": {
"query": "some_field:app*"
}
}
}
這將顯示ES對輸入字符串做了什麼:
"explanations": [
{
"index": "test",
"valid": true,
"explanation": "some_field:APP*"
}
]