Как заставить агрегацию Elasticsearch создать только 1 ведро? - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть индекс Elasticsearch, который содержит поле с именем «host».Я пытаюсь отправить запрос в Elasticsearch, чтобы получить список всех уникальных значений хоста в индексе.На данный момент это настолько близко, насколько я могу получить:

{
"size": 0,
"aggs": {
    "hosts": {
        "terms": {"field": "host"}
        }
    }
}

Что возвращает:

"buckets": [
            {
                "key": "04",
                "doc_count": 201
            },
            {
                "key": "cyn",
                "doc_count": 201
            },
            {
                "key": "pc",
                "doc_count": 201
            }
        ]

Однако фактическое имя хоста - 04-cyn-pc.Насколько я понимаю, он разбивает их на ключевые слова, поэтому я пытаюсь что-то вроде этого:

{
"properties": {
    "host": {
        "type": "text",

        "fields": {
            "raw": {
                "type": "text",
                "analyzer": "keyword",
                "fielddata": true
                }
            }
        }
    }
}

Но он возвращает нелегальное_аргумент_exception "reason": "Mapper for [host.raw] conflicts with existing mapping in other types:\n[mapper [host.raw] has different [index] values, mapper [host.raw] has different [analyzer]]"

Как вы, вероятно, можете сказать, я очень новыйElasticsearch и любая помощь или направление было бы здорово, спасибо!

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

Elastic автоматически индексирует строковые поля как текст и тип ключевого слова, если вы не укажете отображение.В вашем примере, если вы не хотите, чтобы ваше поле анализировалось для полнотекстового поиска, вы просто должны определить тип этих полей как ключевое слово.Таким образом, вы можете избавиться от бремени анализируемого текстового поля.С помощью приведенного ниже сопоставления вы можете легко решить свою проблему, не изменяя свой агг запрос.

"properties": {
  "host": {
    "type": "keyword"
    }
}
0 голосов
/ 07 февраля 2019

Попробуйте вместо этого:

{
"properties": {
    "host": {
        "type": "text",
        "fields": {
            "raw": {
                "type": "keyword"
                }
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...