Ответ 1
Что вам нужно посмотреть, это analyzer, который вы используете. Если вы не укажете, что один Elasticsearch будет использовать Стандартный анализатор. Это отлично подходит для большинства случаев с открытым текстом, но не работает для упоминаемого вами варианта использования.
Что будет делать стандартный анализатор, так это разбить слова в вашей строке и затем преобразовать их в нижний регистр.
Если вы хотите совместить целую строку "Classe A" и отличить ее от "Classe B", вы можете использовать анализатор ключевых слов. Это сохранит все поле как одну строку.
Затем вы можете использовать запрос соответствия, который вернет ожидаемые результаты.
Создайте сопоставление:
PUT vehicles
{
"mappings": {
"vehicle": {
"properties": {
"model": {
"type": "string",
"analyzer": "keyword"
}
}
}
}
}
Выполните запрос:
POST vehicles/_search
{
"query": {
"match": {
"model": "Classe A"
}
}
}
Если вы хотите использовать запрос query_string
, тогда вы можете установить оператор AND
POST vehicles/vehicle/_search
{
"query": {
"query_string": {
"query": "Classe B",
"default_operator": "AND"
}
}
}