Elasticsearch рассматривает вложенный json как простую строку: не может получить текст для start_object - PullRequest
0 голосов
/ 21 марта 2019

Я пытаюсь добавить несколько эластичных документов json, которые имеют глубоко вложенную структуру json.

Я бы хотел обработать некоторые из этих вложенных полей как обычные неиндексированные text вместо json или , пропустить , или это невозможно.

например, у меня есть event документы, подобные этому:

{
    "cluster": "production1",
    "header": {
        "os": "ios",
        "experiments": {
            "e1": {
                "field1": "value1",
                "field2": "value2"
                "array": ["id0"]
            },
            "e2": {
                "field3" : "value3",
                "array": ["id1", "id2", "id3"]
            }
        }
    },
}

Я хочу, чтобы все в поле header.experiments обрабатывалось как один простой текст.
Я пробовал это отображение, но оно не работает для меня, потому что поле experiments является объектом, а не строкой: error: can't get text on a start_object.

"mappings": {
    "event": {
      "properties": {
        "cluster": {
          "type": "keyword",
          "index": true
        },
        "header": {
          "os": {
            "type": "keyword",
            "index": true
          },
          "experiments": {
            "type": "text",  // This does not work 
            "index": false
          }
        }
      }
    }
}

Как настроить ElasticSearch для обработки подполя как простого текста?

1 Ответ

1 голос
/ 21 марта 2019

Чтобы полностью пропустить поле, вы можете установить enabled в false в индексном отображении для поля experiments:

"mappings": {
  "event": {
    "properties": {
      "cluster": {
        "type": "keyword",
        "index": true
      },
      "header": {
        "os": {
          "type": "keyword",
          "index": true
        },
        "experiments": {
          "enabled": false
        }
      }
    }
  }
}

Параметр enabled, который можетприменяется только к типу отображения и к полям object, заставляет Elasticsearch полностью пропускать синтаксический анализ содержимого поля.JSON по-прежнему может быть получен из поля _source, но он не может быть найден или сохранен каким-либо другим способом:

см. Подробности:
https://www.elastic.co/guide/en/elasticsearch/reference/current/enabled.html

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