【问题标题】:Elasticsearch: SearchPhaseExecutionException/Parse FailureElasticsearch:SearchPhaseExecutionException/解析失败
【发布时间】:2014-04-05 04:59:32
【问题描述】:

我在 elasticsearch 上运行了以下查询

curl -X GET "http://localhost:9200/games_201403031340/_search?pretty=true" -d '{
    "query" : {
        "field" : { "title": "ca" }
    }
}'

结果我得到了这个错误

  "error" : "SearchPhaseExecutionException[Failed to execute phase [query], all shards failed; shardFailures {[znmo0cd5Q3S2_ymuDANqKw][games_201403031340][1]: SearchParseException[[games_201403031340][1]: from[-1],size[-1]: Parse Failure [Failed to parse source [{\n    \"query\" : {\n        \"field\" : { \"title\": \"ca\" }\n    }\n}]]]; nested: QueryParsingException[[games_201403031340] No query registered for [field]]; }{[znmo0cd5Q3S2_ymuDANqKw][games_201403031340][2]: SearchParseException[[games_201403031340][2]: from[-1],size[-1]: Parse Failure [Failed to parse source [{\n    \"query\" : {\n        \"field\" : { \"title\": \"ca\" }\n    }\n}]]]; nested: QueryParsingException[[games_201403031340] No query registered for [field]]; }{[znmo0cd5Q3S2_ymuDANqKw][games_201403031340][0]: SearchParseException[[games_201403031340][0]: from[-1],size[-1]: Parse Failure [Failed to parse source [{\n    \"query\" : {\n        \"field\" : { \"title\": \"ca\" }\n    }\n}]]]; nested: QueryParsingException[[games_201403031340] No query registered for [field]]; }{[znmo0cd5Q3S2_ymuDANqKw][games_201403031340][4]: SearchParseException[[games_201403031340][4]: from[-1],size[-1]: Parse Failure [Failed to parse source [{\n    \"query\" : {\n        \"field\" : { \"title\": \"ca\" }\n    }\n}]]]; nested: QueryParsingException[[games_201403031340] No query registered for [field]]; }{[znmo0cd5Q3S2_ymuDANqKw][games_201403031340][3]: SearchParseException[[games_201403031340][3]: from[-1],size[-1]: Parse Failure [Failed to parse source [{\n    \"query\" : {\n        \"field\" : { \"title\": \"ca\" }\n    }\n}]]]; nested: QueryParsingException[[games_201403031340] No query registered for [field]]; }]",
  "status" : 400
}

这也在我的弹性搜索日志中

[2014-03-03 14:19:15,008][DEBUG][action.search.type       ] [Susan Storm] [games_201403031340][1], node[znmo0cd5Q3S2_ymuDANqKw], [P], s[STARTED]: Failed to execute [org.elasticsearch.action.search.SearchRequest@f799344] lastShard [true]
org.elasticsearch.search.SearchParseException: [games_201403031340][1]: from[-1],size[-1]: Parse Failure [Failed to parse source [{
    "query" : {
        "field" : { "title": "ca" }
    }
}]]
    at org.elasticsearch.search.SearchService.parseSource(SearchService.java:586)
    at org.elasticsearch.search.SearchService.createContext(SearchService.java:489)
    at org.elasticsearch.search.SearchService.createContext(SearchService.java:474)
    at org.elasticsearch.search.SearchService.createAndPutContext(SearchService.java:467)
    at org.elasticsearch.search.SearchService.executeQueryPhase(SearchService.java:239)
    at org.elasticsearch.search.action.SearchServiceTransportAction.sendExecuteQuery(SearchServiceTransportAction.java:202)
    at org.elasticsearch.action.search.type.TransportSearchQueryThenFetchAction$AsyncAction.sendExecuteFirstPhase(TransportSearchQueryThenFetchAction.java:80)
    at org.elasticsearch.action.search.type.TransportSearchTypeAction$BaseAsyncAction.performFirstPhase(TransportSearchTypeAction.java:216)
    at org.elasticsearch.action.search.type.TransportSearchTypeAction$BaseAsyncAction.performFirstPhase(TransportSearchTypeAction.java:203)
    at org.elasticsearch.action.search.type.TransportSearchTypeAction$BaseAsyncAction$2.run(TransportSearchTypeAction.java:186)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
    at java.lang.Thread.run(Thread.java:680)
Caused by: org.elasticsearch.index.query.QueryParsingException: [games_201403031340] No query registered for [field]
    at org.elasticsearch.index.query.QueryParseContext.parseInnerQuery(QueryParseContext.java:221)
    at org.elasticsearch.index.query.IndexQueryParserService.parse(IndexQueryParserService.java:321)
    at org.elasticsearch.index.query.IndexQueryParserService.parse(IndexQueryParserService.java:260)
    at org.elasticsearch.search.query.QueryParseElement.parse(QueryParseElement.java:33)
    at org.elasticsearch.search.SearchService.parseSource(SearchService.java:574)
    ... 12 more
[2014-03-03 14:19:15,008][DEBUG][action.search.type       ] [Susan Storm] [games_201403031340][2], node[znmo0cd5Q3S2_ymuDANqKw], [P], s[STARTED]: Failed to execute [org.elasticsearch.action.search.SearchRequest@f799344] lastShard [true]
org.elasticsearch.search.SearchParseException: [games_201403031340][2]: from[-1],size[-1]: Parse Failure [Failed to parse source [{
    "query" : {
        "field" : { "title": "ca" }
    }
}]]
    at org.elasticsearch.search.SearchService.parseSource(SearchService.java:586)
    at org.elasticsearch.search.SearchService.createContext(SearchService.java:489)
    at org.elasticsearch.search.SearchService.createContext(SearchService.java:474)
    at org.elasticsearch.search.SearchService.createAndPutContext(SearchService.java:467)
    at org.elasticsearch.search.SearchService.executeQueryPhase(SearchService.java:239)
    at org.elasticsearch.search.action.SearchServiceTransportAction.sendExecuteQuery(SearchServiceTransportAction.java:202)
    at org.elasticsearch.action.search.type.TransportSearchQueryThenFetchAction$AsyncAction.sendExecuteFirstPhase(TransportSearchQueryThenFetchAction.java:80)
    at org.elasticsearch.action.search.type.TransportSearchTypeAction$BaseAsyncAction.performFirstPhase(TransportSearchTypeAction.java:216)
    at org.elasticsearch.action.search.type.TransportSearchTypeAction$BaseAsyncAction.performFirstPhase(TransportSearchTypeAction.java:203)
    at org.elasticsearch.action.search.type.TransportSearchTypeAction$BaseAsyncAction$2.run(TransportSearchTypeAction.java:186)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
    at java.lang.Thread.run(Thread.java:680)
Caused by: org.elasticsearch.index.query.QueryParsingException: [games_201403031340] No query registered for [field]
    at org.elasticsearch.index.query.QueryParseContext.parseInnerQuery(QueryParseContext.java:221)
    at org.elasticsearch.index.query.IndexQueryParserService.parse(IndexQueryParserService.java:321)
    at org.elasticsearch.index.query.IndexQueryParserService.parse(IndexQueryParserService.java:260)
    at org.elasticsearch.search.query.QueryParseElement.parse(QueryParseElement.java:33)
    at org.elasticsearch.search.SearchService.parseSource(SearchService.java:574)
    ... 12 more
[2014-03-03 14:19:15,008][DEBUG][action.search.type       ] [Susan Storm] [games_201403031340][4], node[znmo0cd5Q3S2_ymuDANqKw], [P], s[STARTED]: Failed to execute [org.elasticsearch.action.search.SearchRequest@f799344]
org.elasticsearch.search.SearchParseException: [games_201403031340][4]: from[-1],size[-1]: Parse Failure [Failed to parse source [{
    "query" : {
        "field" : { "title": "ca" }
    }
}]]
    at org.elasticsearch.search.SearchService.parseSource(SearchService.java:586)
    at org.elasticsearch.search.SearchService.createContext(SearchService.java:489)
    at org.elasticsearch.search.SearchService.createContext(SearchService.java:474)
    at org.elasticsearch.search.SearchService.createAndPutContext(SearchService.java:467)
    at org.elasticsearch.search.SearchService.executeQueryPhase(SearchService.java:239)
    at org.elasticsearch.search.action.SearchServiceTransportAction.sendExecuteQuery(SearchServiceTransportAction.java:202)
    at org.elasticsearch.action.search.type.TransportSearchQueryThenFetchAction$AsyncAction.sendExecuteFirstPhase(TransportSearchQueryThenFetchAction.java:80)
    at org.elasticsearch.action.search.type.TransportSearchTypeAction$BaseAsyncAction.performFirstPhase(TransportSearchTypeAction.java:216)
    at org.elasticsearch.action.search.type.TransportSearchTypeAction$BaseAsyncAction.performFirstPhase(TransportSearchTypeAction.java:203)
    at org.elasticsearch.action.search.type.TransportSearchTypeAction$BaseAsyncAction$2.run(TransportSearchTypeAction.java:186)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
    at java.lang.Thread.run(Thread.java:680)
Caused by: org.elasticsearch.index.query.QueryParsingException: [games_201403031340] No query registered for [field]
    at org.elasticsearch.index.query.QueryParseContext.parseInnerQuery(QueryParseContext.java:221)
    at org.elasticsearch.index.query.IndexQueryParserService.parse(IndexQueryParserService.java:321)
    at org.elasticsearch.index.query.IndexQueryParserService.parse(IndexQueryParserService.java:260)
    at org.elasticsearch.search.query.QueryParseElement.parse(QueryParseElement.java:33)
    at org.elasticsearch.search.SearchService.parseSource(SearchService.java:574)
    ... 12 more
[2014-03-03 14:19:15,009][DEBUG][action.search.type       ] [Susan Storm] All shards failed for phase: [query]
[2014-03-03 14:19:15,008][DEBUG][action.search.type       ] [Susan Storm] [games_201403031340][0], node[znmo0cd5Q3S2_ymuDANqKw], [P], s[STARTED]: Failed to execute [org.elasticsearch.action.search.SearchRequest@f799344] lastShard [true]
org.elasticsearch.search.SearchParseException: [games_201403031340][0]: from[-1],size[-1]: Parse Failure [Failed to parse source [{
    "query" : {
        "field" : { "title": "ca" }
    }
}]]
    at org.elasticsearch.search.SearchService.parseSource(SearchService.java:586)
    at org.elasticsearch.search.SearchService.createContext(SearchService.java:489)
    at org.elasticsearch.search.SearchService.createContext(SearchService.java:474)
    at org.elasticsearch.search.SearchService.createAndPutContext(SearchService.java:467)
    at org.elasticsearch.search.SearchService.executeQueryPhase(SearchService.java:239)
    at org.elasticsearch.search.action.SearchServiceTransportAction.sendExecuteQuery(SearchServiceTransportAction.java:202)
    at org.elasticsearch.action.search.type.TransportSearchQueryThenFetchAction$AsyncAction.sendExecuteFirstPhase(TransportSearchQueryThenFetchAction.java:80)
    at org.elasticsearch.action.search.type.TransportSearchTypeAction$BaseAsyncAction.performFirstPhase(TransportSearchTypeAction.java:216)
    at org.elasticsearch.action.search.type.TransportSearchTypeAction$BaseAsyncAction.performFirstPhase(TransportSearchTypeAction.java:203)
    at org.elasticsearch.action.search.type.TransportSearchTypeAction$BaseAsyncAction$2.run(TransportSearchTypeAction.java:186)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
    at java.lang.Thread.run(Thread.java:680)
Caused by: org.elasticsearch.index.query.QueryParsingException: [games_201403031340] No query registered for [field]
    at org.elasticsearch.index.query.QueryParseContext.parseInnerQuery(QueryParseContext.java:221)
    at org.elasticsearch.index.query.IndexQueryParserService.parse(IndexQueryParserService.java:321)
    at org.elasticsearch.index.query.IndexQueryParserService.parse(IndexQueryParserService.java:260)
    at org.elasticsearch.search.query.QueryParseElement.parse(QueryParseElement.java:33)
    at org.elasticsearch.search.SearchService.parseSource(SearchService.java:574)
    ... 12 more
[2014-03-03 14:19:15,008][DEBUG][action.search.type       ] [Susan Storm] [games_201403031340][3], node[znmo0cd5Q3S2_ymuDANqKw], [P], s[STARTED]: Failed to execute [org.elasticsearch.action.search.SearchRequest@f799344] lastShard [true]
org.elasticsearch.search.SearchParseException: [games_201403031340][3]: from[-1],size[-1]: Parse Failure [Failed to parse source [{
    "query" : {
        "field" : { "title": "ca" }
    }
}]]
    at org.elasticsearch.search.SearchService.parseSource(SearchService.java:586)
    at org.elasticsearch.search.SearchService.createContext(SearchService.java:489)
    at org.elasticsearch.search.SearchService.createContext(SearchService.java:474)
    at org.elasticsearch.search.SearchService.createAndPutContext(SearchService.java:467)
    at org.elasticsearch.search.SearchService.executeQueryPhase(SearchService.java:239)
    at org.elasticsearch.search.action.SearchServiceTransportAction.sendExecuteQuery(SearchServiceTransportAction.java:202)
    at org.elasticsearch.action.search.type.TransportSearchQueryThenFetchAction$AsyncAction.sendExecuteFirstPhase(TransportSearchQueryThenFetchAction.java:80)
    at org.elasticsearch.action.search.type.TransportSearchTypeAction$BaseAsyncAction.performFirstPhase(TransportSearchTypeAction.java:216)
    at org.elasticsearch.action.search.type.TransportSearchTypeAction$BaseAsyncAction.performFirstPhase(TransportSearchTypeAction.java:203)
    at org.elasticsearch.action.search.type.TransportSearchTypeAction$BaseAsyncAction$2.run(TransportSearchTypeAction.java:186)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
    at java.lang.Thread.run(Thread.java:680)
Caused by: org.elasticsearch.index.query.QueryParsingException: [games_201403031340] No query registered for [field]
    at org.elasticsearch.index.query.QueryParseContext.parseInnerQuery(QueryParseContext.java:221)
    at org.elasticsearch.index.query.IndexQueryParserService.parse(IndexQueryParserService.java:321)
    at org.elasticsearch.index.query.IndexQueryParserService.parse(IndexQueryParserService.java:260)
    at org.elasticsearch.search.query.QueryParseElement.parse(QueryParseElement.java:33)
    at org.elasticsearch.search.SearchService.parseSource(SearchService.java:574)
    ... 12 more

不知道发生了什么,但我运行类似...的查询没有问题

curl -X POST localhost:9200/games_201403031340/_suggest?pretty=true -d '
{
  "apple_game" : {
    "text" : "m",
    "completion" : {
      "field" : "title"
    }
  }
}'

【问题讨论】:

  • 对于可能阅读本文的任何人,请确保您使用的是正确版本的 ElasticSearch 服务器,我在本地环境中运行 1.3.2,而我的同事运行 1.4 并生成 ElasticSearch 查询类是建立在 1.4 的功能之上的,所以我崩溃了

标签: ruby lucene elasticsearch


【解决方案1】:

您收到错误是因为 Elasticsearch 不知道字段查询是什么:No query registered for [field]]

如果您要查找标题字段包含 ca 的文档,您可以这样做:

{
  "query": {
    "query_string": {
      "query": "title:ca"
    }
  }
}

【讨论】:

  • 我得到几乎相同的错误ElasticsearchIllegalArgumentException[Suggester[query_string] not supported]
  • 上面的查询是针对 _search 端点,而不是 _suggest。您是要在标题中搜索 ca,还是要获得建议?
  • 在第一个示例中,我尝试在第二个示例中搜索我正在寻找建议
  • _search 和 _suggest 端点有不同的语法;他们做不同的事情。在最初的问题中,您似乎在使用 _search 时遇到了问题,但 _suggest 正在工作。那正确吗?如果没有,您能否重写问题以使其更清楚?
【解决方案2】:

当您的 Elastic Search 卷上的磁盘空间不足时,您也会收到此错误。

【讨论】:

    【解决方案3】:

    在 Marvel/Sense 中执行,在 /_search 命令后搜索 空格。这也会触发 Parse Exception。

    【讨论】:

    • 天哪,这太愚蠢了!当真正的问题是 sense 中的一个不可见空间时,花了 2 个小时寻找原因、阅读日志、集群运行状况和检查错误。谢谢你,蒂亚戈·布西基! :)
    【解决方案4】:

    检查您的 Elastic 服务器是否有足够的可用磁盘空间/RAM。

    对我来说,磁盘空间是个问题。

    【讨论】:

      【解决方案5】:

      对我来说,问题是 Searchkick 中包含的一张表没有记录。确保每个表中至少有一条记录,然后rake db:reindex:all 再试一次。

      【讨论】:

      • 这个答案帮助我解决了我的问题。我用rake searchkick:reindex CLASS=ClassName 重新索引了一个麻烦的类
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-22
      • 2019-07-22
      • 2011-03-28
      • 2019-09-27
      • 2012-10-23
      • 1970-01-01
      相关资源
      最近更新 更多