Мы используем Nutch для обхода некоторых сайтов, отправляем индекс в Elasticsearch и используем настраиваемый пользовательский интерфейс для поиска, вызывая API Elasticsearch.
Проблема в том, что мне нужно просканировать некоторые сайты но исключить их из индекса Elasticsearch (например, мне нужно просканировать A, B и C, но исключить B из индекса) Мы не смогли найти решение которые мы могли бы реализовать на этапе отправки индекса в Elasticsearch, поэтому мы решили попробовать отфильтровать на странице запроса Elasticsearch.
Индекс elasticsearch (который создает nutch) содержит поле URL. Это прекрасно, но проблема в том, что Elasticsearch (насколько я понимаю) проанализировал это, используя полнотекстовый метод, где, например, http://www.somesite.com фактически разбивается на 4 или более клавиатур (http,www,somesite,com). Я не могу понять, как построить запрос Elasticsearch, который, например, исключит эти URL-адреса:
http://www.somesite.com/contact/
http://www.somesite.com/privacy/
Когда я запускаю свой DSL-запрос, кажется, что он разбивает его на части (я имею в виду http,www,somesite,com) и объединяет их вместе, что всегда возвращает все результаты.
Например:
{
"query": {
"must": { "match": { "url": "http://www.somesite.com/page1" }}
}
}
Всегда возвращает все результаты.
Кто-нибудь делал что-то подобное?