Идентификатор документа не задан в ElasticSearch, даже если он настроен внутри logstash.conf - PullRequest
0 голосов
/ 09 апреля 2019

Здесь - содержимое моего logstash.conf.

(Приносим извинения за то, что не вставляем сюда содержимое напрямую. StackOverflow не допускает вопросы с чрезмерно высоким отношением кода к тексту.)

В качестве теста я выполнил команду PowerShell

C: \ Users \ Me \ Downloads \ curl-7.64.1-win64-mingw \ bin>. \ Curl.exe -XPUT 'http://127.0.0.1:31311/twitter_new/7'

Я вижу следующий вывод на моем терминале Logstash:

{
                "message" => "",
               "@version" => "1",
                   "host" => "127.0.0.1",
             "@timestamp" => 2019-04-09T11:35:22.458Z,
    "request_path_length" => 3,
                "headers" => {
              "http_host" => "127.0.0.1:31311",
         "content_length" => "0",
           "request_path" => [
            [0] "",
            [1] "twitter_new",
            [2] "7"
        ],
            "http_accept" => "*/*",
           "http_version" => "HTTP/1.1",
        "http_user_agent" => "curl/7.64.1",
         "request_method" => "PUT"
    },
               "index_id" => "twitter_new"
}

Как видите, document_id не установлен на 7, хотя это то, что я ожидал.

Как я могу это исправить?

UPDATE:

я изменил

if [request_path_length == 3] {

до

if [request_path_length] == 3 {

Я сделал еще один PUT запрос на /twitter_new/8. Затем я сделал запрос GET, чтобы получить все записи, и это была запись, соответствующая последнему запросу PUT, который я сделал:

{
    "_index": "twitter_new",
    "_type": "doc",
    "_id": "O5AIAmoBCWsefMj-o7Fw",
    "_score": 1,
    "_source": {
        "message": "",
        "document_id": "8",
        "@version": "1",
        "@timestamp": "2019-04-09T12:18:00.665Z",
        "index_id": "twitter_new",
        "request_path_length": 3,
        "headers": {
            "request_path": [
                "",
                "twitter_new",
                "8"
            ],
            "http_accept": "*/*",
            "http_version": "HTTP/1.1",
            "content_length": "0",
            "request_method": "PUT",
            "http_user_agent": "curl/7.64.1",
            "http_host": "127.0.0.1:31311"
        },
        "host": "127.0.0.1"
    }
}

Как видите, внутри source, document_id действительно установлено на 8, но _id все еще является случайно сгенерированной строкой. Я бы ожидал, что _id будет 8 также, как _index twitter_new.

Я что-то неправильно понимаю?

1 Ответ

2 голосов
/ 09 апреля 2019

Вам нужно изменить свои условия.

Это правильный способ ссылки на поля в конвейере logstash:

if [request_path_length] == 3

Вы используете if [request_path_length == 3], который не работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...