#elasticsearch
#elasticsearch
Вопрос:
Я пытался выполнить эквивалент запроса IN. Самый простой метод, который я нашел для иллюстрации проблемы, заключается в следующем:
ПОЛУЧИТЬ {URL}/index/_search
{
"query": {
"terms": {
"id": [ "0b54ffc1-cea9-4e5d-9766-559720621922", "0658115e-60b3-439d-9f1a-343ab914806b"],
"boost": 1.0
}
}
}
Это не возвращает мне никаких обращений, хотя у меня есть документы с этими полями идентификаторов.
Однако, если я использую _id, который для этого индекса одинаков, я получаю результаты, т. Е.
{
"query": {
"terms": {
"_id": [ "0b54ffc1-cea9-4e5d-9766-559720621922", "0658115e-60b3-439d-9f1a-343ab914806b"],
"boost": 1.0
}
}
}
На самом деле я хочу использовать совершенно другое поле, которое ‘user.id ‘(я индексирую вложенное поле firebase), это тоже не работает, но приведенный выше пример особенно сбивает с толку.
Просто чтобы проверить это, я приложил скриншот, показывающий результаты kibana для строк, где у вас одинаковое значение в двух полях и поле, которое меня интересует.
Спасибо за любую помощь!
Dan
Ответ №1:
если вы проверите свое сопоставление, ваше id
поле может иметь тип text
. У вас может быть вызванное подполе id.keyword
, которое имеет тип keyword
, и если это так, вы можете достичь того, что вам нужно, используя вместо этого это подполе:
{
"query": {
"terms": {
"id.keyword": [ "0b54ffc1-cea9-4e5d-9766-559720621922", "0658115e-60b3-439d-9f1a-343ab914806b"],
"boost": 1.0
}
}
}