弹性搜索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
}
]
}