Elasticseach - принудительно индексировать поле, избегать хранения - PullRequest
0 голосов
/ 08 апреля 2020

Как заставить поле индексироваться только, а не хранить данные. Эта опция доступна в Solr и не уверена, возможна ли она в Elasticseach.

1 Ответ

2 голосов
/ 08 апреля 2020

С документ

По умолчанию значения полей индексируются, чтобы сделать их доступными для поиска, но они не сохраняются. Это означает, что поле может быть запрошено, но исходное значение поля не может быть получено. Обычно это не имеет значения. Значение поля уже является частью поля _source, которое хранится по умолчанию. Если вы хотите получить значение только одного поля или нескольких полей вместо целого источника _, это можно сделать с помощью фильтрации источника

Если вы не хотите, чтобы поле было хранится в _source тоже. Вы можете исключить поле из источника при отображении

Отображение:

{
  "mappings": {
    "properties": {
      "title":{
        "type":"text"
      },
      "description":{
        "type":
      }
    }, 
    "_source": {
      "excludes": [
        "description"
      ]
    }
  }
}

Запрос:

GET logs/_search
{
  "query": {
    "match": {
      "description": "b" --> field description is searchable(indexed)
    }
  }
}

Результат:

"hits" : [
      {
        "_index" : "logs",
        "_type" : "_doc",
        "_id" : "-aC9V3EBkD38P4LIYrdY",
        "_score" : 0.2876821,
        "_source" : {
          "title" : "a" --> field "description" is not returned
        }
      }
    ]

Примечание:

Удаление полей из источника приведет к возникновению проблемы ниже

  1. API обновления, update_by_query и переиндексации.

  2. На лету выделение.

  3. Возможность переиндексировать один индекс Elasticsearch в другой, чтобы изменить сопоставления или анализ, или обновить индекс до новой основной версии.

  4. Возможность отладки запросов или агрегатов путем просмотра исходного документа, используемого во время индекса.

  5. Потенциально в будущем возможность автоматического восстановления повреждения индекса.

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