2017-11-21 14 views
0

したがって、Nested + Filterクエリに問題があります。私は同じクエリ(キーと値のペアをどのようにjsonに配置するかを除く)と異なる結果(正しい応答と別のエラーをスローする)を出しています。狂ったように聞こえる?さて、私はそれを数回試して、それを十字チェックしました。ElasticSearch:ネストされたクエリ:同じクエリですが結果が異なる

成功したクエリ:

{ 
    "query": { 
     "filtered": { 
      "filter": { 
       "bool": { 
        "must": { 
         "nested": { 
          "filter": { 
           "bool": { 
            "must": { 
             "nested": { 
              "filter": { 
               "bool": { 
                "must": [{ 
                 "term": { 
                  "stream.tagging.tag": "some_tag" 
                 } 
                }] 
               } 
              }, 
              "path": "stream.tagging" 
             } 
            } 
           } 
          }, 
          "path": "stream" 
         } 
        } 
       }, 
       "and": [{ 
        "not": { 
         "term": { 
          "deleted": "true" 
         } 
        } 
       }, { 
        "term": { 
         "source": 11 
        } 
       }] 
      } 
     } 
    } 
} 

エラークエリ:

{ 
    "query": { 
     "filtered": { 
      "filter": { 
       "and": [{ 
        "not": { 
         "term": { 
          "deleted": "true" 
         } 
        } 
       }, { 
        "term": { 
         "source": 11 
        } 
       }], 
       "bool": { 
        "must": { 
         "nested": { 
          "filter": { 
           "bool": { 
            "must": { 
             "nested": { 
              "filter": { 
               "bool": { 
                "must": [{ 
                 "term": { 
                  "stream.tagging.tag": "some_tag" 
                 } 
                }] 
               } 
              }, 
              "path": "stream.tagging" 
             } 
            } 
           } 
          }, 
          "path": "stream" 
         } 
        } 
       } 
      } 
     } 
    } 
} 

エラーメッセージ:私はそれらを個別に発射するとき

nested: QueryParsingException[[stream_rules_test] No filter registered for [must]]; }]","status":400 

はまた、唯一の入れ子になったとだけフィルタクエリ、それを注意してくださいあまりにもうまくいく。私は愚かな間違いをしていないことを願っていますが、私は何も見逃していないとほとんど確信しています。

ESバージョン:1.5

+0

使用しているESのバージョンは? – Val

+0

@Val ElasticSearch 1.5 – thisisnish

答えて

0

問題は、新しいバージョンがサポートする「といないとのバージョンと一緒に表示されます。クエリをクエリ以下のすべての時間を働くまだ混乱し、それは、キーと値のペアを動作しない理由。

{ 
    "query": { 
     "filtered": { 
      "filter": { 
       "bool": { 
        "must_not": { 
         "term": { 
          "deleted": "true" 
         } 
        }, 
        "must": [{ 
         "term": { 
          "source": 11 
          } 
         },{ 
         "nested": { 
          "filter": { 
           "bool": { 
            "must": { 
             "nested": { 
              "filter": { 
               "bool": { 
                "must": [{ 
                 "term": { 
                  "stream.tagging.tag": "some_tag" 
                 } 
                }] 
               } 
              }, 
              "path": "stream.tagging" 
             } 
            } 
           } 
          }, 
          "path": "stream" 
         } 
        }] 
       } 
      } 
     } 
    } 
} 
関連する問題