【发布时间】:2019-04-06 07:21:27
【问题描述】:
"在 Elasticsearch 中设计一个索引,以便查询中的 "&" 和 "and" 返回相同的结果"
无论是使用“and”作为查询字符串还是与符号“&”进行搜索,我们如何才能使 Elasticsearch 返回相同的结果。
例如,有一个查询可查找名称中包含“和/&”的所有电影标题。
- 先生和史密斯夫人
- 杰克和吉尔
- Abc 和 Def & ghi
- 假名
因此在这种情况下,无论是使用“and”还是“&”完成搜索都应该返回 1,2,3。
从我的 Kibana 开发工具中转储
PUT 测试索引 { “设置”:{“number_of_replicas”:0, “number_of_shards”:1 }, “映射”:{ “文档”: { “特性”: { “电影名称”:{“类型”:“文本”} } } } }
PUT /test_index/doc/1 { "movie_name":"史密斯先生和夫人" }
PUT /test_index/doc/2 { "movie_name":"杰克和吉尔" }
PUT /test_index/doc/3 { "movie_name":"Abc 和 Def & ghi" }
PUT /test_index/doc/4 { "movie_name":"假名" }
下面的两个查询应该返回相同的结果
GET test_index/_search { “大小”:20, “询问”: { “匹配”: { “电影名”:“&” } } }
GET test_index/_search { “大小”:20, “询问”: { “匹配”: { “电影名”:“和” } } }
【问题讨论】: