Запрос Elasticsearch показывает неверные результаты

Я использую запрос ниже, чтобы получить эластичные результаты поиска в php.

{
"query": {
"filtered": {
"query": {
"query_string": {
"query": "q= (\"Agriculture\" OR \"Agribusiness\" OR \"Agriculture\") et_tax= \"Agriculture\" -et_tax:\"Agriculture\""}
}
}
},
"aggs": {
"lawfirmcount": {
"cardinality": {
"field": "pd_lawfirmID",
"precision_threshold": 1250
}
}
}
}

Когда используется приведенный выше код, он будет получать непревзойденные результаты. Что-то не так в этом запросе?

0

Решение

Похоже, что вы запрашиваете на том же поле, et_tax, дважды. В первом случае, где присутствует термин «сельское хозяйство», а затем снова, где нет «сельское хозяйство» (-et_tax:). Я ожидаю, что это вернет все документы, так как термин «сельское хозяйство» либо существует, либо не существует на местах et_taxи оператор по умолчанию для query_string является OR,

Посмотрите на документация за query_string, Вы можете изменить default_operator быть AND вместо.

Кроме того, я предлагаю удалить двойные кавычки из значений поиска, предполагая, что они не являются частью термина, который вы ищете.

Наконец, я не вижу q поле в вашем отображении. Я не думаю, что «q =» в вашем запросе работает так, как вы ожидаете. Вы, вероятно, должны удалить это и указать default_field запросить против.

Надеюсь это поможет…

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]