API анализа Elasticsearch показывает неправильные токены с версией 1.X при использовании в соответствии с синтаксисом 7.X.

Работая над одним из запросов пользователя, я изначально предполагал, что он использует последнюю версию, и когда он показал analyze 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 и следовал синтаксису, представленному в последней версии elasticsearch.


person user156327    schedule 12.04.2020    source источник


Ответы (1)


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

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

  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
        }
    ]
}
person user156327    schedule 12.04.2020