2015-05-11 142 views
0

在此示例中,我已将完整查询示例放置到已阻止的非工作部分。嵌套过滤器中的query_string过滤器会引发错误

基本上我们有一个文件,在datailItems下有一个嵌套的文档类型,并试图对该嵌套文档中的字段执行query_string过滤器失败。我采取相同的部分,并运行它对一个非嵌套的领域,它的工作原理。所以显然我做错了什么。

我收到的错误是nested: QueryParsingException[[******] [_na] filter malformed, must start with start_object]

那么,什么是做到这一点的正确方法?

一些注意事项。 “和”被用于包含布尔,范围等的进一步的过滤器要求......我已经删除了这个例子的附加要求。

{ 
    "size" : 1, 
    "query" : { 
     "filtered" : { 
      "filter" : { 
       "and" : [{ 
         "nested" : { 
          "path" : "detailItems", 
          "filter" : { 
           "and" : [{ 
             "query" : { 
              "query_string" : { 
               "detailItems.name" : { 
                "query" : "mastersettings", 
                "minimum_should_match" : 1 
               } 
              } 
             } 
            } 
           ] 
          } 
         } 
        } 
       ] 
      } 
     } 
    } 
} 
+0

只有走'query_string'部分,包括现场' detailItems.name'并在该大型查询之外进行测试。事情是这样的'{ “查询”:{ “嵌套”:{ “路径”: “detailItems”, “查询”:{ “QUERY_STRING”:{ “田”: “detailItems.name” ], “查询”: “mastersettings”, “minimum_should_match”:1 } } } } }' –

+0

好了,它看起来像我必须把它完全是出于一种嵌套过滤器的工作 '{ “size”:1, “query”:{ “过滤”:{ “过滤器”:{ “查询”:{ “QUERY_STRING”:{ “detailItems.name”:{ “查询”: “mastersettings”, “minimum_should_match”:1 } } } } } } }' – danatcofo

回答

0

在OP的query_string没有语法正确,下面是查询字符串可以重写如何一个例子:

"size" : 1, 
    "query" : { 
     "filtered" : { 
      "filter" : { 
       "and" : [{ 
         "nested" : { 
          "path" : "detailItems", 
          "filter" : { 
           "and" : [{ 
             "query" : { 
              "query_string" : { 
               "fields": [ 
                "detailItems.name" 
               ], 
               "query" : "mastersettings", 
               "minimum_should_match" : 1 

              } 
             } 
            } 
           ] 
          } 
         } 
        } 
       ] 
      } 
     } 
    } 
+0

Yah我得到了这个来运行自己,但我实际上无法得到它返回结果。为什么我原来的工作不在嵌套上下文中而不在里面? – danatcofo

+0

尽管这并没有解决我的目标,但它是解决问题的方法。谢谢@凯蒂 – danatcofo