Elasticsearch NGramTokenFilter:未知字段“token_chars”

问题描述 投票:0回答:2

`` 我将我的elasticsearch升级到8.9,同时使用elasticsearch客户端创建文档时遇到以下错误

co.elastic.clients.json.JsonpMappingException:反序列化co.elastic.clients.elasticsearch._types.analysis.NGramTokenFilter时出错:未知字段“token_chars”(JSON路径:settings.index.analysis.filter.nGram_filter.token_chars)

虽然索引是在 kibana 上使用相同的映射创建的,但我希望它仅从 elasticsearch 客户端创建


`{ 
    "mappings" : 
        {
            "properties": {
                "suggestion": {
                    "type": "text",
                        "fields": {
                            "analyzed": {
                                "type": "text",
                                "analyzer": "nGram_analyzer",
                                "search_analyzer": "whitespace"
                                }
                            }
                        },
                            "weight": {
                            "type": "integer"
                            }
            }   
        }, 
    "settings" :            
        {
        "number_of_shards": 1,
        "number_of_replicas": 1,
        "max_ngram_diff" : 20,
        "index": {
            "analysis": {
                "analyzer": {
                "nGram_analyzer": {
                    "type": "custom",
                    "tokenizer": "whitespace",
                    "filter": [
                        "lowercase",
                        "asciifolding",
                        "nGram_filter"
                        ]
                    }
                },
                "filter": {
                    "nGram_filter": {
                        "type": "ngram",
                        "min_gram": 2,
                        "max_gram": 20,
                        "token_chars": [
                            "letter",
                            "digit",
                            "punctuation",
                            "symbol"
                        ]
                    }
                }
            }
        }
    }
} 
elasticsearch
2个回答
0
投票

我测试了你的映射和设置,它工作正常。

您看到的错误消息表明 Elasticsearch 客户端在反序列化 NGramTokenFilter 时遇到问题,因为存在未知字段

token_chars
。这可能是由于 Elasticsearch 版本与您使用的客户端版本不匹配所致。

token_chars
字段是NGramTokenFilter的一部分,它应该被客户端识别。如果不是,可能是您使用的客户端版本不支持该字段或者客户端存在错误。

检查您的客户端的兼容性。 https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/java-rest-high-compatibility.html


0
投票

根据 Elasticsearch 的 Java 规范来源,NGramTokenFilter 没有 tokenChars 字段,但是,NGramTokenizer 中存在该字段。我可以假设您需要标记器。分词器分割输入的分词,过滤器过滤生成的分词。您可以编写自定义分词器,将分词器与过滤条件结合起来。

© www.soinside.com 2019 - 2024. All rights reserved.