根据7.X语法使用Elasticsearch Analysis API时,使用1.X版本显示错误的令牌

Elasticsearch忍者

在处理用户的一个查询时,最初我以为他使用的是最新版本,当他显示分析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中提供的语法。

Elasticsearch忍者

由于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
        }
    ]
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用ElasticSearch Nest版本7.x创建IndexTemplate

Angularjs Flickr API语法错误:使用nojsoncallback = 1时出现意外令牌

使用Elasticsearch 1.x进行Java API聚合

使用FluentAssertions API 4.x语法迁移xunit项目以使用FluentAssertions v5.x版本运行

SQLite:创建表时使用x'abc'语法

使用从 Angular 7 TS 到 .Net Owin 的 Web API 令牌身份验证时收到错误的密码

语句d =('x':1,'y':2,2,'z':3)显示Python 3.6中的错误。新版本的正确语法是什么?

是否可以在 Elasticsearch 7.x 中使用 javascript 作为脚本语言?

如何使用Ruby on Rails将ElasticSearch从6.8升级到7.X

Elasticsearch-从2.x升级到7.x-使用TransportClient和Jest进行双重写入

使用api验证失败时显示错误

使用EnableTemplateEngine时,Sendgrid X-SMTP-API返回错误

仅当创建zip时,我可以使用哪种7-zip命令行语法来显示错误?

使用X509Certficate解密JWT令牌时IDX10659错误

使用[x,_]语法与(x:_)语法进行模式匹配以获取Haskell中的无限列表

语法X = Add()([tensor1,tensor2])在使用keras.layers.add构造ResNET时如何正确工作?

(standard_in)1:使用bc时的语法错误

使用retryWhen根据http错误代码更新令牌

使用1 === 1时发生PHP语法错误,但当1 === 0时未发生

根据内部5x5值填充7x7网格

使用'yes'安装X-Pack时用于安装Elasticsearch的Shell脚本引发错误

使用存储过程时出现Laravel 7错误:-SQLSTATE [42000]:语法错误或访问冲突:1064

如何使用asyncpg API修复“ $ 1”或附近的“语法错误”

错误:使用Gas组装时,表达式后为垃圾“ 0x7f”

如何获取Visual Studio Code Analysis使用的Roslyn版本

HTML5 srcset:混合使用x和w语法

使用 Python 3.8 制作“减去 x 天”的语法?

elasticsearch 7x 作為 gitlab 服務不允許在變量名稱中使用點

使用的变量。但是错误仍然显示“变量x未使用”