Я использую запрос ниже, чтобы получить эластичные результаты поиска в 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
}
}
}
}
Когда используется приведенный выше код, он будет получать непревзойденные результаты. Что-то не так в этом запросе?
Похоже, что вы запрашиваете на том же поле, et_tax
, дважды. В первом случае, где присутствует термин «сельское хозяйство», а затем снова, где нет «сельское хозяйство» (-et_tax:
). Я ожидаю, что это вернет все документы, так как термин «сельское хозяйство» либо существует, либо не существует на местах et_tax
и оператор по умолчанию для query_string
является OR
,
Посмотрите на документация за query_string
, Вы можете изменить default_operator
быть AND
вместо.
Кроме того, я предлагаю удалить двойные кавычки из значений поиска, предполагая, что они не являются частью термина, который вы ищете.
Наконец, я не вижу q
поле в вашем отображении. Я не думаю, что «q =» в вашем запросе работает так, как вы ожидаете. Вы, вероятно, должны удалить это и указать default_field
запросить против.
Надеюсь это поможет…
Других решений пока нет …