Elasticsearch: не игнорировать тип искомого значения - PullRequest
1 голос
/ 08 апреля 2020

Я пытаюсь сделать это простым JSON, чтобы запросить Elasticsearch: {"query" : {"bool" : {"must" : [{"terms" : {"a" : [1, 2, "3"]}}]}}, "from" : 0, "size" : 1000}

Какие результаты я ожидаю - все записи, где a является целым числом 1 или a является целым числом 2 или a является строкой "3".

Я понимаю, что одно поле в БД не может иметь несколько типов, вопрос касается запроса. Версия ES - 7.x (настройки по умолчанию), и в документе I индекс a является целым числом.

Но я все еще получаю результаты, где a является целым числом 3 - пришлось пропустить, как предотвратить такое поведение? Я sh Elasticsearch учитывает тип значений и возвращает только те же типы.

Возможно ли это?

1 Ответ

0 голосов
/ 08 апреля 2020

Когда вы устанавливаете тип a как целое число, 3 будет приведено к целому числу.

3a, напротив, выкинет number_format_exception.


Учитывая, что все ваши значения a кажутся цифрами c, вы можете установить строгое отображение, которое в первую очередь не позволит индексировать строки, используя coerce:

PUT myindex
{
  "mappings": {
    "properties": {
      "a": {
        "type": "integer",
        "coerce": false
      }
    }
  }
}

, что выдаст исключение Integer value passed as String при попытке этого

POST myindex/_doc
{
  "a": "3"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...