弹性搜索6.4创建自定义字符过滤器时抛出错误

弹性搜索6.4创建自定义字符过滤器时抛出错误,
Warning: implode(): Invalid arguments passed in /data/phpspider/zhask/webroot/tpl/detail.html on line 45
,,所以我很确定我在语法上遗漏了一些东西,但我似乎不知道到底是什么。我正在尝试创建定义的电话号码模式捕获令牌筛选器。它说定义一个关键字过滤器,然后在上面应用模式捕获标记。我就是这么做的: { "mappings": { "_doc": { "properties": { "phone": { "type": "text", "analyzer

所以我很确定我在语法上遗漏了一些东西,但我似乎不知道到底是什么。我正在尝试创建定义的电话号码模式捕获令牌筛选器。它说定义一个关键字过滤器,然后在上面应用模式捕获标记。我就是这么做的:

{
    "mappings": {
        "_doc": {
            "properties": {
                "phone": {
                    "type": "text",
                    "analyzer": "my_phone_analyzer"
                }
            }
        }
    },
    "settings": {
        "analysis": {
            "analyzer": {
                "my_phone_analyzer": {
                    "type": "custom",
                    "tokenizer": "keyword",
                    "char_filter": [
                        "phone_number"
                    ]
                }
            }
        },
        "char_filter": {
            "phone_number": {
                "type": "pattern_capture",
                "preserve_original": 1,
                "patterns": [
                    "1(\\d{3}(\\d+))"
                ]
            }
        }
    }
}
这将导致以下错误:

{
    "error": {
        "root_cause": [
            {
                "type": "illegal_argument_exception",
                "reason": "unknown setting [index.char_filter.phone_number.patterns] please check that any required plugins are installed, or check the breaking changes documentation for removed settings"
            }
        ],
        "type": "illegal_argument_exception",
        "reason": "unknown setting [index.char_filter.phone_number.patterns] please check that any required plugins are installed, or check the breaking changes documentation for removed settings",
        "suppressed": [
            {
                "type": "illegal_argument_exception",
                "reason": "unknown setting [index.char_filter.phone_number.preserve_original] please check that any required plugins are installed, or check the breaking changes documentation for removed settings"
            },
            {
                "type": "illegal_argument_exception",
                "reason": "unknown setting [index.char_filter.phone_number.type] please check that any required plugins are installed, or check the breaking changes documentation for removed settings"
            }
        ]
    },
    "status": 400
}

如果有人能指出我做错了什么,那就太好了

创建
my\u phone\u analyzer
的配置有几个问题

  • pattern\u capture
    允许在令牌筛选器中使用,而不是在字符筛选器中使用,请阅读此处的详细信息

  • preserve_original
    设置不接受
    1
    值,而使用
    true
    false
    作为值

  • 因此,考虑到所有这些因素,我能够用与您相同的设置创建我的手机分析仪

    {
       "settings" : {
          "analysis" : {
             "filter" : {
                "code" : {
                   "type" : "pattern_capture",
                   "preserve_original" : true,
                   "patterns": [
                        "1(\\d{3}(\\d+))"
                    ]
                }
             },
             "analyzer" : {
                "code" : {
                   "tokenizer" : "keyword",
                   "filter" : [ "code", "lowercase" ]
                }
             }
          }
       }
    }
    

    如果您遇到任何问题,请告诉我。

    您提到的链接看起来很旧

    模式捕获不再适用于,而仅适用于

    下面是如果您在5.x以上使用Elasticsearch,您的映射将是怎样的

    PUT <your_index_name>
    {  
       "mappings":{  
          "_doc":{  
             "properties":{  
                "phone":{  
                   "type":"text",
                   "analyzer":"my_phone_analyzer"
                }
             }
          }
       },
       "settings":{  
          "analysis":{  
             "analyzer":{  
                "my_phone_analyzer":{  
                   "type":"custom",
                   "tokenizer":"keyword",
                   "filter":[  
                      "phone_number"
                   ]
                }
             },
             "filter":{  
                "phone_number":{  
                   "type":"pattern_capture",
                   "preserve_original":true,
                   "patterns":[  
                      "1(\\d{3}(\\d+))"
                   ]
                }
             }
          }
       }
    }
    
    代币:
    希望有帮助

    哈哈,你在这方面打败了我,提供了AnalyzeAPI和输出:pI不能在这里发表评论。这不允许我键入我想要的内容。但是我不知道你已经回答了这个问题。我想知道,为什么不允许你打字,你想打字:-)我有一些非常敏感和有趣的地方,伙计:-)谢谢你们两个,太感谢了!这真的很有帮助!现在我需要建立在你们提供的基础上,在搜索时去掉所有无用的字符,比如+-()。我将亲自参与其中,并希望在此过程中学习。我将接受Kamal的回答,因为它有更多的信息,但Amit,同样感谢您的帮助!干杯
    POST <your_index_name>/_analyze
    {
      "analyzer": "my_phone_analyzer",
      "text": "19195557321"
    }
    
    {
      "tokens" : [
        {
          "token" : "19195557321",
          "start_offset" : 0,
          "end_offset" : 11,
          "type" : "word",
          "position" : 0
        },
        {
          "token" : "9195557321",
          "start_offset" : 0,
          "end_offset" : 11,
          "type" : "word",
          "position" : 0
        },
        {
          "token" : "5557321",
          "start_offset" : 0,
          "end_offset" : 11,
          "type" : "word",
          "position" : 0
        }
      ]
    }