Здравствуйте! Изучаю ElasticSearch несколько месяцев, создал индекс с подобным типом документа:
"mappings": {
"news": {
"properties" : {
"title" : {"type" : "text", "fields" : {"russian" : {"type" : "text", "analyzer": "russian"}, "ukrainian" : {"type" : "text", "analyzer": "ukrainian"}}}
}
}
}
Документы в индекс поступают как на русском, так и на украинском языке. Для украинского аналайзера инсталлировал плагин.
Допустим есть такие фразы:
1: "Тарас Шевченко автор Кобзаря"
2: "Андрей Шевченко тренер сборной Украины по футболу"
3: "Тарас Шевченко и Адрей Шевченко - знаменитые украинцы"
4: "Шевченко завтра проведет прессконференцию"
Так вот, как мне написать запрос, который бы исключал определенные сочетания ключевых фраз для поиска, например, я ищу документы только о Андрее Шевченко и о Шевченко без упоминания имени (2,3,4)
Запрос
{
"query": {
"bool": {
"should": [
{"match_phrase":{"title.russian" :"Шевченко"}},
{"match_phrase":{"title.ukrainian" :"Шевченко"}}
],
"minimum_should_match":1
}
}
}
выдаст мне все документы.
Как исключить Тараса Шевченко?) Когда я использую в bool запросе must_not я теряю фразу, где они упоминаются оба...
Надеюсь не путано объяснил