0

我正在使用 Amplify 对 elasticsearch 进行 Ajax 调用,但是在过滤结果时遇到问题。由于我将所有内容都作为 URL 传递,因此我不确定如何格式化它。当我通过 firstName:John 作为 searchCriteria 时,以下返回 4 个结果。

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

如果我有 firstName:John&lastName:Smith,它会返回 6 个结果,因为有 2 个 smith 记录的名字不是 John。

如果我从命令提示符运行以下命令,我会得到一个预期的结果。

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

我尝试使用以下作为我的 Ajax 调用,但它不返回任何内容。我还尝试\"了 curl 请求所具有的。

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

1 回答 1

1

查询应该是 url 编码的+firstName:John +lastName:Smith。顺便说一句,将您的弹性搜索服务器暴露给外界可能是个坏主意。

于 2013-01-02T16:21:53.860 回答