Пользователь WittyID, пропустил некоторые важные вещи, такие как:
- значения
null_value
должны быть того же типа данных, что и ваше поле, поэтому в своем примере он объявил integer
поле но определенная NULL
как null_values
, выдаст json_parse_exception
, и это упоминается как important
в официальной ссылке , как показано ниже:
Значение null_value должен быть того же типа данных, что и поле. Например, длинное поле не может иметь строку null_value.
null_value
влияет только на то, как данные индексируются, он не изменяет документ _source, поэтому в исходном документе будет храниться
, что бы вы ни передавали, а не тот, который указан в null_values
param и во время запроса вам также необходимо использовать значение null_value
param. .
Короче говоря, null
не распознается в ES, поэтому вы можете определить свои собственные значения для null
, а затем используйте его для индексации и запроса значений null
. Все это легко объяснить с помощью приведенного ниже примера, который может попробовать любой:
Создать индекс
{
"mappings": {
"properties": {
"my_signed_integer": {
"type":"integer",
"null_value": -1 --> note we defining `null` values as `-1`.
}
}
}
}
Индекс do c
store null
integer docs
{"my_number": null}
Если вы получить это сделать c от ES, оно будет возвращено, как показано ниже:
{
"_index": "so-6053847",
"_type": "_doc",
"_id": "1",
"_version": 1,
"_seq_no": 0,
"_primary_term": 1,
"found": true,
"_source": {
"my_number": null. --> As explained earlier, in source its stored as `null`.
}
}
Неотрицательное значение индекса
{"my_number": 10}
Поисковый запрос для получения целого числа, которое имело null
значения
{
"query": {
"term": {
"my_signed_integer": -1 -->notice same `null_value`, you need to mention
}
}
}
Результат:
"hits": [
{
"_index": "so-6053847",
"_type": "_doc",
"_id": "1",
"_score": 1.0,
"_source": {
"my_signed_integer": null --> notice it shows `null`, not `-1`
}
}
]
Запрос на поиск других чисел (не ноль) ie в нашем случае 10
{
"query": {
"term": {
"my_signed_integer": 10
}
}
}
Результат
"hits": [
{
"_index": "so-6053847",
"_type": "_doc",
"_id": "2",
"_score": 1.0,
"_source": {
"my_signed_integer": 10 -->source matches the indexed value for this doc
}
}
]