如何用ElasticSearch中的_index字段用过滤器包装嵌套查询?

时间:2017-12-23 11:41:30

标签: elasticsearch

我有以下查询:

GET product,account/producttype,accounttype/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "bool": {
            "must": [
              {
                "nested": {
                  "query": {
                    "bool": {
                      "should": [
                        {
                          "match": {
                            "keywords.keyword": {
                              "query": "search query"
                            }
                          }
                        },
                        {
                          "term": {
                            "keywords.keyword.keyword": {
                              "value": "search query"
                            }
                          }
                        }
                      ]
                    }
                  },
                  "path": "keywords"
                }
              }
            ],
            "filter": [
              {
                "term": {
                  "_index": {
                    "value": "product"
                  }
                }
              }
            ]
          }
        },
       {
      "bool": {
        "must": [
          {
            "multi_match": {
              "query": "search query",
              "operator": "or",
              "fields": [
                "accountName^1.5",
                "description^0.8"
              ]
            }
          }
        ],
        "filter": [
          {
            "term": {
              "_type": {
                "value": "accounttype"
              }
            }
           }
          ]
        }
       }
      ]
    }
  }
}

当我运行上述查询时,我得到了这个例外:

  

“index”:“帐户”,             “caused_by”:{               “type”:“illegal_state_exception”,               “reason”:“[嵌套]无法在路径[keywords]下找到嵌套对象”             }

内部索引帐户没有名为Keywords的嵌套对象。

过去指数查询用于解决此问题,但现在已弃用。

现在上面的查询显示:我正在使用 _index 进行过滤,但它仍然会给我错误。

那么,你能指导我摆脱那个异常并让我的查询工作吗?

PS:

我正在使用elasticsearch v5.1.1

1 个答案:

答案 0 :(得分:0)

您只需调整网址即可指向正确的索引:GET product/producttype/_search