【问题标题】:elasticsearch query with ajax使用 ajax 的弹性搜索查询
【发布时间】:2015-08-24 15:36:09
【问题描述】:

我运行查询并在 marvel 插件中得到结果,如图所示:

我想在我的网络应用程序中使用 ajax 请求这是我的一段代码

var query = "{'query': {'wildcard': {'heroname': {'value': '*dr*'}}}}";

                                $.ajax({
                                    url: "http://localhost:9200/dota2/_search?" + query,
                                    dataType: "json",
                                    type: "GET",
                                    success: function (data) {
                                        debugger
                                        alert("Success do your stuff!");
                                    },
                                    error: function (a, b, c) {
                                        debugger
                                        alert("Server Internal Error!");
                                    }
                                })

它成功但返回许多结果.. 我找不到原因。但是我将请求从客户端发送到弹性并粘贴到浏览器然后这是json数据,因为响应来自我的ajax成功:

我希望只有 1 个 json 数据,就像在 marvel 插件中一样,但它会返回索引中的所有数据,所以我认为通配符查询被忽略了,但为什么?还是等等?

【问题讨论】:

  • 在你的 URL 中,我可以看到你有两次问号(即?),一次在内联查询之前,另一次在pretty 之前,所以你可以用&pretty 再试一次而不是?pretty?
  • 我用您的更改编辑了问题,但它只是改进了响应格式:)

标签: elasticsearch elasticsearch-plugin


【解决方案1】:

如果您想在 GET 调用的查询字符串中传递您的搜索查询,您需要在 source parameter 中传递它。

$.ajax({
    url: "http://localhost:9200/dota2/_search?source=" + query,
    ...                                        ^
                                               |
                                   add source parameter here

【讨论】:

  • 它抛出 "SearchPhaseExecutionException" 这里是完整的异常消息:{ "error" : "SearchPhaseExecutionException[未能执行阶段 [query],所有分片失败;shardFailures {[P9HfL6BpRW-S61IeDUJdPw][dota2] [0]: SearchParseException[[dota2][0]: from[-1],size[-1]: Parse Failure [Failed to parse source [{'query': {'wildcard': {'heroname': {' value': 'dr'}}}}]]]; 嵌套:JsonParseException[Unexpected character (''' (code 39)):期待有效的名称字符(对于未引用的名称)或双精度-quote(用于引用)开始字段
  • 我应该从查询字符串中删除 ' 字符吗?
  • 是的,因为您需要在 JSON 字符串中使用转义的双引号,而不是单引号。
  • 太棒了!很高兴能提供帮助。
  • 您好,您也可以检查一下吗? stackoverflow.com/questions/32181301/…谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-05
  • 2021-10-11
相关资源
最近更新 更多