我有以下弹性搜索设置:
"settings": {
"index":{
"analysis":{
"analyzer":{
"analyzer_keyword":{
"tokenizer":"keyword",
"filter":["lowercase", "asciifolding"]
}
}
}
}
}
上述内容适用于以下关键字:
以上数据分别以beyonce
和celine dion
存储在elasticsearch中。
我可以在没有重音的情况下搜索Celine
或Celine Dion
,我会得到相同的结果。但是,当我搜索Céline
时,我没有得到任何结果。如何配置elasticsearch以搜索带重音的部分关键字?
查询正文如下:
{
"track_scores": true,
"query": {
"bool": {
"must": [
{
"multi_match": {
"fields": ["name"],
"type": "phrase",
"query": "Céline"
}
}
]
}
}
}
,映射是
"mappings" : {
"artist" : {
"properties" : {
"name" : {
"type" : "string",
"fields" : {
"orig" : {
"type" : "string",
"index" : "not_analyzed"
},
"simple" : {
"type" : "string",
"analyzer" : "analyzer_keyword"
}
},
}
答案 0 :(得分:1)
我会建议这个映射,然后从那里开始:
{
"settings": {
"index": {
"analysis": {
"analyzer": {
"analyzer_keyword": {
"tokenizer": "whitespace",
"filter": [
"lowercase",
"asciifolding"
]
}
}
}
}
},
"mappings": {
"test": {
"properties": {
"name": {
"type": "string",
"analyzer": "analyzer_keyword"
}
}
}
}
}
答案 1 :(得分:0)
确认在查询时使用了相同的分析器。以下是可能不会发生这种情况的一些可能原因:
term
或terms
查询(请参阅Term Query和章节标题“为什么术语查询不符合我的文档?”) query_string
查询(例如,请参阅Simple Query String Query) - 我发现如果您使用不同的分析器指定多个字段,那么我需要将字段分成单独的查询并指定分析器参数(使用版本2.0)