我正在使用以下索引上的ES 2.1分析器(恰当地命名为my_index):
$ curl -XPUT 'localhost:9200/my_index/' -d '
{
"settings" : {
"analysis" : {
"analyzer" : {
"my_synonym_analyzer" : {
"tokenizer" : "standard",
"filter" : [ "my_synonym_filter" ]
}
},
"filter" : {
"my_synonym_filter" : {
"type" : "synonym",
"synonyms" : [ "foo, bar" ]
}
}
}
},
"mappings" : {
"my_type" : {
"properties" : {
"my_field" : {
"type" : "string",
"analyzer" : "my_synonym_analyzer"
}
}
}
}
}'
以下分析按预期工作:
$ curl -XGET 'localhost:9200/my_index/_analyze?analyzer=my_synonym_analyzer&text=foo'
$ curl -XGET 'localhost:9200/my_index/_analyze?field=my_field&text=foo'
{
"tokens" : [ {
"token" : "foo",
"start_offset" : 0,
"end_offset" : 3,
"type" : "<ALPHANUM>",
"position" : 0
}, {
"token" : "bar",
"start_offset" : 0,
"end_offset" : 3,
"type" : "SYNONYM",
"position" : 0
} ]
}
然而,这不是。我期望与上面相同的输出,如reference中所述。
$ curl -XGET 'localhost:9200/my_index/_analyze?field=my_type.my_field&text=foo'
{
"tokens" : [ {
"token" : "foo",
"start_offset" : 0,
"end_offset" : 3,
"type" : "<ALPHANUM>",
"position" : 0
} ]
}
我错过了什么吗?
答案 0 :(得分:1)
从ES 2.0开始,field names may not be prefixed with the type name了,即使它曾经使用过Elasticsearch的2.x之前的版本。
因此,如果你正在使用Elasticsearch 2.x,你所观察到的就是你应该得到的东西,即
field=my_field
分析工作field=my_type.my_field
进行分析时已不复存在。