Ошибка упругого поиска с нулевым значением для плотного векторного типа данных - PullRequest
0 голосов
/ 21 апреля 2020

Я создал индекс с dense_vector:

curl -X PUT "localhost:9200/my_index?pretty" -H 'Content-Type: application/json' -d'
{
  "mappings": {
    "properties": {
      "my_vector": {
        "type": "dense_vector",
        "dims": 3  
      }
    }
  }
}
'

Когда я индексирую документ с вектором, он работает хорошо:

curl -X PUT "localhost:9200/my_index/_doc/1?pretty" -H 'Content-Type: application/json' -d'
{
  "my_vector" : [0.5, 10, 6]
}
'

НО когда я индексирую документ с нулевым значением для вектора, он возвращает ошибку:

curl -X PUT "localhost:9200/my_index/_doc/2?pretty" -H 'Content-Type: application/json' -d'
{
  "my_vector" : null
}
'

Ошибка:

{
  "error" : {
    "root_cause" : [
      {
        "type" : "parsing_exception",
        "reason" : "Failed to parse object: expecting token of type [VALUE_NUMBER] but found [END_OBJECT]",
        "line" : 5,
        "col" : 1
      }
    ],
    "type" : "mapper_parsing_exception",
    "reason" : "failed to parse",
    "caused_by" : {
      "type" : "parsing_exception",
      "reason" : "Failed to parse object: expecting token of type [VALUE_NUMBER] but found [END_OBJECT]",
      "line" : 5,
      "col" : 1
    }
  },
  "status" : 400
}

Как я могу обработать нулевое значение для вектора введите ES?

1 Ответ

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

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

curl  --location --request POST 'http://{ip}:9200/my_index/_doc/{docId}/_update' \
--header 'Content-Type: application/json' \
--header 'Content-Type: application/json' \
--data-raw '{
     "script" : "ctx._source.remove(\"my_vector\")"
}'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...