Как искать одно значение вasticsearch - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть 2 документа вasticsearch:

{"_id": "1", "a": "123"}
{"_id": "2", "a": ["123", "456"]}

Затем я спрашиваю так:

{
    "query": {
        "bool": {
            "must": [{
                "term": {
                    "a": "123"
                }
            }]
        }
    }
}

Вот что я получил:

{"_id": "1", "a": "123"}
{"_id": "2", "a": ["123", "456"]}

I знать asticsearch изначально поддерживает несколько значений, поэтому они оба представлены. Но мне нужна только первая запись с идентификатором «1»:

{"_id": "1", "a": "123"}

Как мне этого добиться?

1 Ответ

1 голос
/ 23 апреля 2020

используя скрипт

Вы можете использовать скрипт для возврата документов с размером массива 1. Если документ с одним значением отсутствует, он «не» вернет документы с несколькими значениями. Невозможно получить следующий документ, соответствующий минимальному размеру. Это должно быть обработано на стороне клиента

{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "a": "123"
          }
        },
        {
          "script": {
            "script": "if(doc['a.keyword'].size()==1) return true;"
          }
        }
      ]
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...