Настроить ElasticSearch для `+` RFC7159? - PullRequest
0 голосов
/ 26 июня 2018

Есть ли способ настроить ElasticSearch для принятия более новых спецификаций JSON?

Мне нужно представить положительные, отрицательные и беззнаковые числа в JSON для индексации в ElasticSearch.

, например

[
    { "confidence":   0},
    { "confidence":   0.417763},
    { "confidence":   -0.296771},
]

RFC 7158 будет поддерживать это:

minus = %x2D                ; -
plus  = %x2B                ; +
zero  = %x30                ; 0

Я не могу найти конфигурацию для этого, поэтому у меня есть обходной путь. Преобразуйте каждое поле с именем «достоверность» в

  • диапазон без отрицательных чисел (0-1)

    {"type": "integer_range", "gte":0, "lte":1}
    
  • scaled_float в объекте, который указывает знак с отдельным полем

    {
        "properties": {
          "confidence": {
            "type": "scaled_float",
            "scaling_factor": 10000000
          },
          "negative": {
            "type": "boolean"
          }
        }
    }
    

json-схема, по-видимому, принята в отображении PUT.

{
  "$schema": "http://json-schema.org/schema#",
  "mappings": {
    ...
   }
{

{
  "acknowledged" : true,
  "shards_acknowledged" : true,
  "index" : "bakeoff-rfc"
}

Я использую ES 6.2.2, последнюю версию, поддерживаемую моим облачным провайдером.

1 Ответ

0 голосов
/ 27 июня 2018

Что вы можете сделать, это отобразить ваше поле доверия как float или double, а затем в исходном документе добавить их в виде строки.

Создайте отображение индекса следующим образом:

PUT rfc7158
{
  "mappings": {
    "doc": {
      "properties": {
        "confidence": {
          "type": "float"
        }
      }
    }
  }
}

Затем добавьте свои данные вот так, и вы не получите ошибок:

POST rfc7158/doc/_bulk
{ "index": {}}
{ "confidence": "0" }
{ "index": {}}
{ "confidence": "-0.296771" }
{ "index": {}}
{ "confidence": "+0.8723734" }
{ "index": {}}
{ "confidence": "0.7672323" }

При выполнении следующей агрегации вы увидите, что +0.8723734 - это максимум, а -0.296771 - это минимум, как и ожидалось

POST rfc7158/_search  
{
  "size": 0,
  "aggs": {
    "minconfidence": {
      "min": {
        "field": "confidence"
      }
    },
    "maxconfidence": {
      "max": {
        "field": "confidence"
      }
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...