如果字段不存在,则搜索多个索引'query_shard_exception'

时间:2018-11-12 06:53:19

标签: elasticsearch elasticsearch-5

我正在尝试搜索多个索引,但是每个索引的字段和映射都不同。就像一个索引具有嵌套路径一样。

当我尝试查询索引时,没有嵌套路径的索引出现错误。

    {
  "query": {
    "bool": {
      "should": [
        {
          "term": {
            "a": "good"
          }
        },
        {
          "term": {
            "a.b": "sample"
          }
        },
        {
          "nested": {
            "path": "x.y.z",
            "query": {
              "bool": {
                "should": [
                  {
                    "term": {
                      "x.y.z.id.keyword": "test@gamil.com"
                    }
                  }
                ]
              }
            }
          }
        }
      ]
    }
  }
}

在嵌套路径x.y.z上方仅存在一个索引。

我尝试找到一种解决方案,找到了ignore_unavailable。但是它将忽略没有嵌套路径的索引,但是我需要该索引中与查询中其他条件匹配的文档。

1 个答案:

答案 0 :(得分:0)

通过将your-index替换为包含嵌套字段的索引的名称来尝试以下查询。

{
  "query": {
    "bool": {
      "should": [
        {
          "term": {
            "a": "good"
          }
        },
        {
          "term": {
            "a.b": "sample"
          }
        },
        {
          "bool": {
            "must": [
              {
                "term": {
                  "_index": "your-index"
                }
              },
              {
                "nested": {
                  "path": "x.y.z",
                  "query": {
                    "bool": {
                      "should": [
                        {
                          "term": {
                            "x.y.z.id.keyword": "test@gamil.com"
                          }
                        }
                      ]
                    }
                  }
                }
              }
            ]
          }
        }
      ]
    }
  }
}