【发布时间】:2015-12-12 04:27:29
【问题描述】:
我很困惑。我已将以下文档编入索引:
POST test/topic
{
"title": "antiemetics"
}
使用以下查询:
{
"query": {
"query_string" : {
"fields" : ["title*"],
"default_operator": "AND",
"query" :"anti emetics",
"use_dis_max" : true
}
},
"highlight" : {
"fields" : {
"*" : {
"fragment_size" : 200,
"pre_tags" : ["<mark>"],
"post_tags" : ["</mark>"]
}
}
}
}
以及以下设置和映射:
POST test{
"settings":{
"index":{
"number_of_shards":1,
"analysis":{
"analyzer":{
"merge":{
"type":"custom",
"tokenizer":"keyword",
"filter":[
"lowercase"
],
"char_filter":[
"hyphen",
"space",
"html_strip"
]
}
},
"char_filter":{
"hyphen":{
"type":"pattern_replace",
"pattern":"[-]",
"replacement":""
},
"space":{
"type":"pattern_replace",
"pattern":" ",
"replacement":""
}
}
}
}
},
"mappings":{
"topic":{
"properties":{
"title":{
"analyzer":"standard",
"search_analyzer":"standard",
"type":"string",
"fields":{
"specialised":{
"type":"string",
"index":"analyzed",
"analyzer":"standard",
"search_analyzer":"merge"
}
}
}
}
}
}
}
我知道我使用多字段没有意义,因为我使用的是与标题相同的索引分析器,所以请忽略这一点,但是我对我对分析器的理解更感兴趣。我期待合并分析器将以下查询“antiemetics”更改为“antiemetics”,我希望应用了分析器的多字段设置与令牌“antiemetics”匹配,但我没有得到任何结果,即使我已经通过运行分析 API 测试了分析器正在从查询中删除空格。知道为什么吗?
【问题讨论】:
-
你用的是什么版本的ES?
标签: elasticsearch