因此,我一直在尝试添加带有参数的唯一令牌过滤器,而不在我的自定义分析器中创建单独的令牌过滤器。
根据文档,一个带有参数的令牌过滤器的示例不需要创建单独的令牌过滤器:https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-length-tokenfilter.html#analysis-长度tokenfilter analyze ex
根据文档,一个带有参数的令牌过滤器的示例不需要创建单独的令牌过滤器:https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-unique-tokenfilter.html
PUT pokemon
{
"settings":
{
"analysis":
{
"analyzer":
{
"deba_analyzer":
{
"char_filter": ["html_strip"],
"tokenizer": "uax_url_email",
"filter": ["lowercase","stop","kstem",{"type": "unique","only_on_same_position": true}]
}
}
}
},
"mappings":
{
"properties":
{
"name":
{
"type":"text"
}
}
}
}
然而,直截了当地说,这给了我一个错误:
"reason" : "Failed to load settings from [{\"analysis\":{\"analyzer\":{\"deba_analyzer\":{\"filter\":[{\"only_on_same_position\":true,\"type\":\"unique\"}],\"char_filter\":[\"html_strip\"],\"tokenizer\":\"uax_url_email\"}}}}]",
"caused_by" : {
"type" : "illegal_state_exception",
"reason" : "only value lists are allowed in serialized settings"
}
1条答案
按热度按时间qv7cva1a1#
即使您附加的令牌筛选器链接也指定了
unique
单独过滤filter
你也需要这样做。换句话说,分析仪的filter
数组只接受具有默认设置的内置筛选器的名称
或需要单独定义的自定义筛选器的名称。
所以用这个:
别忘了指定精心创建的分析器——如果不指定,它将被注册,但不会应用于任何字段。
编辑
这个
_analyze
示例中的api允许详细地指定过滤器,但是PUT
api根本没有。