NiFi: QueryElasticSearchHttp: Сопоставление объектов с языком выражений? - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть поток NiFi, где я передаю некоторые данные через API, который я легко перенаправляю в ElasticSearch.

У меня есть второй поток, где мне нужно использовать процессор QueryElasticSearchHttp. Внутри этого процессора у меня есть запрос JSON:

{
    "query" : { 
        "bool" : {
            "must" : [
                { "match" : { "Example1" : ${Example1} } },
                { "match" : { "ExampleCode" : ${ExampleCode} } }
            ]
        }
    }       
}

Я пытаюсь сопоставить объект Example1 и ExampleCode и вернуть весь столбец. Я пытался ввести язык выражения в запрос. Не работает, и я не могу найти пример того, как сопоставить весь объект.

Я пытался поставить кавычки так: "${}".

Я получаю ошибку:

ERROR [Timer-Driven Process Thread-7] ...from Elasticsearch due to 
Elasticsearch returned code 400 with message Bad Request, transferring 
flow file to failure: 
org.apache.nifi.processors.elasticsearch.UnretryableException: 
Elasticsearch returned code 400 with message Bad Request

Атрибуты также правильно маршрутизируются и появляются там, где они должны появиться.

Как правильно отформатировать это? Спасибо

1 Ответ

0 голосов
/ 07 ноября 2018

Вы можете попробовать использовать процессор JsonQueryElasticsearch. Демонстрационный поток показан ниже:

Общий поток Overall flow

Начальный шаг Start Step

Запрос ES Step Query ES Step

JSON-запрос The JSON query

Шаг сохранения магазина enter image description here

Служба контроллера The Controller Service

Выход прогона:

$ cd /var/so_out
$ cat 17973351988502 | python -m json.tool
[
    {
        "_id": "o002",
        "_index": "office",
        "_score": 0.26742277,
        "_source": {
            "description": "Shows and events",
            "name": "Tom",
            "title": "Marketing Manager"
        },
        "_type": "doc"
    }
]
...