Поиск по нескольким индексам, query_shard_exception, когда поля отсутствуют - PullRequest
0 голосов
/ 12 ноября 2018

Я пытаюсь выполнить поиск по нескольким индексам, но поля и отображение для каждого индекса различны.Например, у одного индекса есть вложенный путь.

Когда я пытаюсь выполнить запрос по индексу, у меня появляется ошибка для индекса, у которого нет вложенного пути.

    {
  "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"
                    }
                  }
                ]
              }
            }
          }
        }
      ]
    }
  }
}

вышевложенный путь xyz присутствует только для одного индекса.

Я попытался найти решение, нашел ignore_unavailable.Но он будет игнорировать индекс, не имеющий вложенного пути, но мне нужны документы в этом индексе, которые соответствуют другим условиям в запросе.

1 Ответ

0 голосов
/ 12 ноября 2018

Попробуйте выполнить следующий запрос, заменив 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"
                          }
                        }
                      ]
                    }
                  }
                }
              }
            ]
          }
        }
      ]
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...