我在查询弹性搜索时查询 apples 。在我们的索引数据中,文本显示为 apple's 。如果我搜索 apples ,我就没有结果。如果我搜索 apple's ,我们会得到结果。但在我担心的情况下,如果我使用 apples 搜索,我也需要 apple的查询相同的结果。有没有办法处理这类案件。
答案 0 :(得分:3)
您可以通过以下方式设置char_filter来执行此操作:
PUT my_index
{
"settings": {
"analysis": {
"analyzer": {
"my_analyzer": {
"tokenizer": "keyword",
"char_filter": [
"my_char_filter"
]
}
},
"char_filter": {
"my_char_filter": {
"type": "mapping",
"mappings": [
"' => "
]
}
}
}
}
}
POST my_index/_analyze
{
"analyzer": "my_analyzer",
"text": "apple's"
}
这将导致:
{
"tokens": [
{
"token": "apples",
"start_offset": 0,
"end_offset": 7,
"type": "word",
"position": 0
}
]
}
您正在从索引中删除撇号,您可以成功搜索 apple 和 apple&#39>
答案 1 :(得分:0)
感觉就像你需要一个模糊搜索,如果我说得对。请看一下这篇文章:https://www.elastic.co/blog/found-fuzzy-search并告诉我们,如果那不是你想要的。