我在elasticsearch中有一个索引,其中包含针对特定字段的多个自定义分析器。例如:
"titulo" : {
"type" : "string",
"index_analyzer" : "analyzer_titulo",
"search_analyzer" : "analyzer_titulo"
}
analyzer_titulo
是这样的:
"analyzer_titulo":{
"filter":[
"standard",
"lowercase",
"asciifolding",
"stop_filter",
"filter_shingle",
"stemmer_filter"
],
"char_filter":[
"html_strip"
],
"tokenizer":"standard"
}
但是,当我尝试使用_analyze
api来测试此字段的分析器时,elasticsearch似乎忽略了自定义分析器:
正如您所看到的,两种结果都不同,但如果我的理解是正确的,那么它们应该是相同的。
我在这里缺少什么?有没有办法使用_explain
api来查看使用的是什么分析器?
PS:遗憾的是,我无法发布我的完整映射(公司政策),但我只有一个索引和一种类型。
由于
答案 0 :(得分:0)
我不熟悉您用来测试分析器的工具(不知道为什么它不起作用),但您可以做的是运行一个返回索引中的值的查询
curl 'http://localhost:9200/myindex/livros/_search?pretty=true' -d '{
"query" : {
"match_all" : { }
},
"script_fields": {
"terms" : {
"script": "doc[field].values",
"params": {
"field": "titulo"
}
}
}
}'
如果您的类型中包含许多文档,那么您需要将match_all :{}
更改为更具体的内容。