Недавно что-то странное начало происходить с Elasticsearch. Всё работало на разных серверах, а теперь и в локальной среде и нет should не учитывает некоторые слова.
{
"_index" : "products",
"_type" : "_doc",
"_id" : "1",
"_version" : 11,
"_seq_no" : 15,
"_primary_term" : 1,
"found" : true,
"_source" : {
"id" : 1,
"title" : "фуникулер",
"gender" : "gen1",
}
}
{
"_index" : "products",
"_type" : "_doc",
"_id" : "2",
"_version" : 11,
"_seq_no" : 16,
"_primary_term" : 1,
"found" : true,
"_source" : {
"id" : 2,
"title" : "фуникулер",
"gender" : "женский",
}
}
Запрос на поиск этих двух продуктов с нужным gender:
query: {
bool: {
must: {
query_string: {
query: "+фуникулер",
default_field: "title"
}
},
should: [
{term: { 'gender': "gen1" }},
{term: { 'gender': "женский" }}
],
minimum_should_match: 1
}
}
--> 2 найдено
НО, если поменять gender у какого-то товара на "дамы" или "для женщин",
{
"_index" : "products",
"_type" : "_doc",
"_id" : "2",
"_version" : 11,
"_seq_no" : 16,
"_primary_term" : 1,
"found" : true,
"_source" : {
"id" : 2,
"title" : "фуникулер",
"gender" : "дамы", //ЗАМЕНИЛИ GENDER
}
}
то не находит по такому запросу:
query: {
bool: {
must: {
query_string: {
query: "+фуникулер",
default_field: "title"
}
},
should: [
{term: { 'gender': "gen1" }},
{term: { 'gender': "дамы" }}
],
minimum_should_match: 1
}
}
--> 1 найдено
Что за аномалия такая? На некоторые слова подобные не реагирует. mapping и настройки не менял, раньше вроде искалось. Переустановка тоже не поможет, так как это встречается на локальной среде и на удаленном сервере.
Rails 5 + Elasticsearch 6.6.2