Как применить not_analyzed к полю - PullRequest
0 голосов
/ 02 ноября 2018

Я пытаюсь добавить not_analyzed в поле URL. Я попытался с помощью строки типа поля, которую он дал мне Не удалось проанализировать отображение [doc]: Нет обработчика для типа [строка], объявленного в поле [url] , и я заменил тип на текст, и я получил Не удалось проанализировать сопоставление [doc]: не удалось преобразовать [url.index] в логическое исключение. Как мне сделать зарегистрированный URL not_analyzed

 PUT /some_index
    {
        "settings": {
            "index": {
                "number_of_shards": 5,
                "number_of_replicas": 1,
                "refresh_interval": "60s",
                "analysis" : {
                  "analyzer" : {
                    "my_analyzer" : {
                        "tokenizer" : "standard",
                        "filter" : ["standard", "lowercase", "my_snow","asciifolding","english_stop"]
                    }
                  },
                  "filter" : {
                    "my_snow" : {
                        "type" : "snowball",
                        "language" : "Lovins"
                    },
                    "english_stop": {
              "type":        "stop",
              "stopwords":"_english_"
            }
                }
            }
            }
        },
        "mappings": {
            "doc": {
                "_source": {
                    "enabled": true
                },
                "properties": {
                    "content": {
                        "type": "text",
                        "index": "true",
                        "store": true,
                               "analyzer":"my_analyzer",
                                "search_analyzer": "my_analyzer"
                    },
                    "host": {
                        "type": "keyword",
                        "index": "true",
                        "store": true

                    },
                    "title": {
                        "type": "text",
                        "index": "true",
                        "store": true,
                                "analyzer":"my_analyzer",
                                "search_analyzer": "my_analyzer"

                    },
                    "url": {
                        "type": "text",
                        "index": "not_analyzed",
                         "store": true,
                        "search_analyzer": "my_analyzer"

                    }
                }
            }
        }
    }

1 Ответ

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

Elasticsearch 5.0 убрал настройку not_analyzed. Вместо этого тип string был разбит на две части: text, который анализируется, и keyword, который не анализируется. Подробнее об этом сообщении в блоге: Строки мертвы, да здравствуют струны!

Если вы используете 5.0+, ваше отображение имеет недопустимое значение. Кроме того, это противоречит: вы говорите, что не хотите анализировать url, но вы указали анализатор: "search_analyzer": "my_analyzer"

Если вы не хотите, чтобы поле анализировалось, вы должны настроить поле URL так же, как вы делали хост:

"url": {
    "type": "keyword"
}

В противном случае введите тип text:

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