Полето [], използвано в израза, не съществува в съпоставянията

Функцията, която се опитвам да изпълня, е да създам показател в kibana, който показва броя на "невалидирани" потребители. Изпращам дневник, изпратен, когато потребител се регистрира, след това дневник, когато потребител е валидиран.

Така че броят, който искам, е разликата между броя на регистрираните и броя на валидираните.

В kibana не мога да направя такава математическа операция, така че намерих заобиколно решение: добавих „скриптирано поле“, наречено „невалидирано“, което е равно на 1, когато потребител се регистрира, и -1, когато потребител валидира своя акаунт. Сумата от полето „невалидирани“ трябва да бъде броят на невалидирани потребители.

Това е скриптът, който дефинирах в моето скриптово поле: doc['ctxt_code'].value == 1 ? 1 : doc['ctxt_code'].value == 2 ? -1 : 0

с:

  • ctxt_code 1 като регистър на регистъра

  • ctxt_code 2 като валидиран регистрационен файл

Тази настройка работи добре, когато всичките ми регистрационни файлове имат „ctxt_code“, но когато се избута регистрационен файл без това поле, kibana извежда следната грешка:

Field [ctxt_code] used in expression does not exist in mappings кибана грешка

Не мога да разбера тази грешка, защото kibana казва:

If a field is sparse (only some documents contain a value), documents missing the field will have a value of 0

което е случаят.

Някой има ли представа?


person Paul Andrieux    schedule 18.05.2016    source източник
comment
Ако сте французин, можете да ни помогнете във френския форум на Elasticsearch: discuss.elastic.co/t/   -  person lenybernard    schedule 21.05.2016
comment
Сигурни ли сте, че полето ctxt_code съществува в съпоставянията на всички ваши logstash индекси? Виждам в горния десен ъгъл на екранната снимка, че работите върху последните седем дни, можете ли да се уверите, че индексите на logstash от последните седем дни имат това поле ctxt_code в създаденото картографиране?   -  person Val    schedule 25.05.2016
comment
Няма новини добри новини?   -  person Val    schedule 27.05.2016


Отговори (1)


Добре е да имате регистрационни файлове без полето ctxt_code... но трябва да имате съпоставяне за това поле във вашите индекси. Виждам, че правите заявки за множество индекси с logstash-*, така че вероятно удряте такъв, който го няма.

Можете да включите картографиране за вашето поле във всички индекси. Просто влезте в Sense и използвай това:

PUT logstash-*/_mappings/[your_mapping_name]
{
  "properties": {
    "ctxt_code": {
      "type": "short",           // or any other numeric type, including dates
      "index": "not_analyzed"    // Only works for non-analyzed fields.
    }
  }
}

Ако предпочитате, можете да го направите от командния ред: CURL -XPUT 'http://[elastic_server]/logstash-*/_mappings/[your_mapping_name]' -d '{ ... same JSON ... }'

person Joseph Tinoco    schedule 22.07.2016