これは、使用しているクエリの種類によって異なります。その型が入力文字列を分析するためにフィールド自体のアナライザを使用する場合、それはうまくいくはずです。
regexp
クエリを使用している場合、このクエリは入力文字列を解析しないため、app.*
をそのまま渡しても、ユーザーは検索対象となります。
しかし、あなたは適切query_string
クエリを使用する場合は、1つは動作するはずその:
{
"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*"
}
]