API анализа Elasticsearch показывает неправильные токены с версией 1.X при использовании в соответствии с синтаксисом 7.X - PullRequest
1 голос
/ 12 апреля 2020

Во время работы над одним из запросов пользователя, где изначально я предполагал, что он использует последнюю версию, и когда он показал анализ API , это было удивительно.

Пользовательский анализатор для которых необходимо проверить токены

{
    "settings": {
        "analysis": {
            "filter": {
                "splcharfilter": {
                    "type": "pattern_capture",
                    "preserve_original": true,
                    "patterns": [
                        "([?/])"
                    ]
                }
            },
            "analyzer": {
                "splcharanalyzer": {
                    "tokenizer": "keyword",
                    "filter": [
                        "splcharfilter",
                        "lowercase"
                    ]
                }
            }
        }
    }
}

Анализ API

POST /_analyze

{
    "analyzer": "splcharanalyzer",
    "text" : "And/or"
}

Output

{
    "tokens": [
        {
            "token": "analyzer", --> why this token
            "start_offset": 7,
            "end_offset": 15,
            "type": "<ALPHANUM>",
            "position": 1
        },
        {
            "token": "splcharanalyzer", --> why this token
            "start_offset": 19,
            "end_offset": 34,
            "type": "<ALPHANUM>",
            "position": 2
        },
        {
            "token": "text", --> why this token
            "start_offset": 42,
            "end_offset": 46,
            "type": "<ALPHANUM>",
            "position": 3
        },
        {
            "token": "and",
            "start_offset": 51,
            "end_offset": 54,
            "type": "<ALPHANUM>",
            "position": 4
        },
        {
            "token": "or",
            "start_offset": 58,
            "end_offset": 60,
            "type": "<ALPHANUM>",
            "position": 5
        }
    ]
}

Как ясно показано выше, генерируется так много токенов, которые не верны , когда проверенный пользователь упомянул, что он использует версию 1.7 и следовал синтаксису, предоставленному в последней версииasticsearch.

1 Ответ

1 голос
/ 12 апреля 2020

Поскольку версия Elasticsearch 1.X довольно старая, и Elasticsearch по умолчанию открывает последнюю версию API и задается вопросом о важности анализа API для устранения многих проблем в Elasticsearch, я публикую здесь правильный синтаксис версии 1.X, Надеюсь, что это поможет другим пользователям старой версии Elasticsearch.

Elasticsearch 1.X анализ API-документации можно найти здесь и ниже - правильные токены, сгенерированные для текста, упомянутого в вопросе.

  GET  /_analyze?analyzer=splcharanalyzer&text=And/or --> note its GET request

Правильно токены, сгенерированные для And/or с анализатором, размещенным в вопросе для 1.X

{
    "tokens": [
        {
            "token": "and/or",
            "start_offset": 0,
            "end_offset": 6,
            "type": "word",
            "position": 1
        },
        {
            "token": "/",
            "start_offset": 0,
            "end_offset": 6,
            "type": "word",
            "position": 1
        }
    ]
}
...