PercolateException [未能渗透]; 嵌套 - 嵌套文档上的Percolate API

raz*_*inr 5 nested elasticsearch

我正在使用elasticsearch 1.1.

通常在这个版本中,嵌套文档上的过滤器应该可以工作.

虽然,我试图这样做,但我收到以下错误:

failures: [

    {
        index: test
        shard: 4
        reason: BroadcastShardOperationFailedException[[test][4] ]; nested: PercolateException[failed to percolate]; nested: ElasticsearchIllegalArgumentException[Nothing to percolate]; 
    }

]
Run Code Online (Sandbox Code Playgroud)

我有以下过滤器(对不起elasticsearch头删除了我的所有报价):

{

    _index: test
    _type: .percolator
    _id: 27
    _version: 1
    _score: 1
    _source: {
        query: {
            filtered: {
                query: {
                    match_all: { }
                }
                filter: {
                    nested: {
                        filter: {
                            term: {
                                city: london
                            }
                        }
                        path: location
                    }
                }
            }
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

在尝试渗透此文档时,我收到错误:

{
  ...
  "location": {
    "date": "2014-05-05T15:07:58",
    "namedplaces": {
      "city": "london"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

知道为什么它不起作用吗?

编辑:

在elasticsearch日志中,我对错误的准确度更高:

[2014-05-06 13:33:48,972][DEBUG][action.percolate         ] [Tomazooma] [test][2], node[H42BBxajRs2w2NmllMnp7g], [P], s[STARTED]: Failed to execute [org.elasticsearch.action.percolate.PercolateReque
st@7399452e]
org.elasticsearch.percolator.PercolateException: failed to percolate
        at org.elasticsearch.action.percolate.TransportPercolateAction.shardOperation(TransportPercolateAction.java:198)
        at org.elasticsearch.action.percolate.TransportPercolateAction.shardOperation(TransportPercolateAction.java:55)
        at org.elasticsearch.action.support.broadcast.TransportBroadcastOperationAction$AsyncBroadcastAction$2.run(TransportBroadcastOperationAction.java:226)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:744)
Caused by: org.elasticsearch.ElasticsearchIllegalArgumentException: Nothing to percolate
        at org.elasticsearch.percolator.PercolatorService.percolate(PercolatorService.java:187)
        at org.elasticsearch.action.percolate.TransportPercolateAction.shardOperation(TransportPercolateAction.java:194)
        ... 5 more
Run Code Online (Sandbox Code Playgroud)

Blb*_*lbl 4

ES的文档对此不太清楚。但是当您查看此页面时,您会发现当您进行渗透时,您需要用 doc{} 包围索引文档。这确实是强制性的,否则您将出现以下异常:

尝试这样做:

   {
"doc":{
  ...
  "location": {
    "date": "2014-05-05T15:07:58",
    "namedplaces": {
      "city": "london"
    }
  }
}
}
Run Code Online (Sandbox Code Playgroud)

我希望它会有所帮助;-)