Фильтрация неисправностей в результате упругого поиска с использованием Ajax

Я использую Amplify для выполнения моих Ajax-вызовов на asticsearch, однако у меня возникают проблемы с фильтрацией моих результатов. Поскольку я передаю все как URL, я не уверен, как его отформатировать. Следующее возвращает 4 результата, когда я передаю firstName:John как searchCriteria.

self.url = "http://leServer:lePort/people/person/_search?q=" + self.searchCriteria;

Если у меня есть firstName:John&lastName:Smith, он возвращает 6 результатов, потому что есть 2 записи кузнеца с именем, отличным от John.

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

curl -XGET "http://leServer:lePort/people/person/_search?pretty=true" -d "{
  \"query\": {
    \"filtered\": {
      \"query\": {
        \"text\": {
          \"firstName\": \"John\"
        }
      },
      \"filter\": {
        \"query\": {
          \"text\": {
            \"lastName\": \"Smith\"
          }
        }
      }
    }
  }
}"

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

self.url = "http://leServer:lePort/people/person/_search?" +"-d"+"{query:{filtered:{query:{text:{firstName:John}},filter:{query:{text:{lastName:Smith}}}}}}"

1 ответ

Решение

Запрос должен быть закодирован в URL +firstName:John +lastName:Smith, Кстати, это может быть плохой идеей, чтобы выставить ваш сервер Fl exibl esearch для внешнего мира.

Другие вопросы по тегам