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

Список значений: ["AGA>23/180@23221" , "AGA>24/180@23221" ,"AGA>25/180@23221"]

Чтобы найти документы, решение состоит в том, чтобы перебрать каждый элемент в списке и вызвать несколько запросов, используя запрос для каждого элемента:

Запрос 1:

{
  "query": {
    "term": {
      "mid.keyword": "AGA>23/180@20210212"
    }
  }
}

Запрос 1:

{
  "query": {
    "term": {
      "mid.keyword": "AGA>24/180@20210212"
    }
  }
}

Запрос 3:

{
  "query": {
    "term": {
      "mid.keyword": "AGA>25/180@20210212"
    }
  }
}

Можно ли объединить поиск в один запрос? Когда я пытаюсь объединить в один запрос с использованием полезной нагрузки:

{
  "query": {
    "term": {
      "mid.keyword": ["AGA>23/180@20210212" , "AGA>24/180@20210212" , "AGA>25/180@20210212"]
    }
  }
}

Эластичный поиск возвращает ошибку:

'reason': '[term] query does not support array of values',
0
blue-sky 13 Фев 2021 в 14:30

1 ответ

Лучший ответ

Используйте запрос terms. вместо этого:

{
  "query": {
    "terms": {
      "mid.keyword": ["AGA>23/180@20210212" , "AGA>24/180@20210212" , "AGA>25/180@20210212"]
    }
  }
}
1
Joe Sorocin 13 Фев 2021 в 12:50