我在弹性服务器中获得了数百本书名的索引,文档如下:
{"_id": 123, "title": "The Diamond Age", ...}
我已经获得了用户输入的自由格式文本块。文本块可能包含许多书籍标题,并且大写不一。
我想在文本块中找到所有书名,因此我可以链接到特定的书页。
知道我怎么能这样做吗?我一直在寻找文本块中的精确短语匹配,没有运气。
答案 0 :(得分:0)
您需要将字段标题索引为not_analyzed或使用关键字分析器。 这将告诉elasticsearch在您发送查询时不对该字段执行任何操作,这将使您能够进行完全匹配搜索。
我建议你保留一个分析版本以及一个not_analyzed版本,以便能够进行精确搜索以及分析搜索。你的映射会像这样,在这种情况下我假设类型名称是你的情况下的电影。
"mappings":{
"movies":{
"properties":{
"title":{
"type": "string",
"fields":{
"row":{
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
}
这将为您提供两个字段标题,其中包含已分析的标题和title.row,其中包含完全没有处理索引的确切值。
如果您输入了确切的,title.row将匹配