Search_analyzer
- это параметр для индекса времени , поэтому, если вы хотите установить его для поля с синонимом:
{
"settings": {
"index" : {
"analysis" : {
"analyzer" : {
"synonym" : {
"tokenizer" : "whitespace",
"filter" : ["synonym"]
}
},
"filter" : {
"synonym" : {
"type" : "synonym",
"synonyms_path" : "analysis/synonym.txt"
}
}
}
}
}, "mappings" : {
"properties" : {
"description" : {
"type" : "text",
"analyzer": "synonym",
"search_analyzer": "standard"
},
"content" : {
"type" : "text",
"analyzer": "synonym",
"search_analyzer": "standard",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
}
}
Таким образом вы установили анализатор по умолчанию для времени запроса. Таким образом, теперь вы можете выполнить запрос multimatch
следующим образом:
{
"query": {
"multi_match" : {
"query": "bread cereal",
"type": "cross_fields",
"fields": [
"description",
"content"
],
"operator": "and"
}
}
}
Если вы не задали указатель c search_analyzer
во время индексации для этих полей, которые тот же анализатор использовал для индикации используется во время запроса. Если вы не установили search_analyzer
для времени индекса, вы могли бы принудительно использовать указанный c анализатор во время запроса , вставив analyzer
параметр в запрос:
{
"query": {
"multi_match" : {
"query": "bread cereal",
"analyzer" : "standard",
"type": "cross_fields",
"fields": [
"description",
"content"
],
"operator": "and"
}
}
}