如何解决对于Elasticsearch中不匹配的单词,将索引的“关键字”更新为“文本”字段类型
{
"myindex": {
"mappings": {
"properties": {
"city": {
"type": "text","fields": {
"keyword": {
"type": "keyword","ignore_above": 256
}
}
}
}
}
}
}
我尝试通过在索引上使用以下PUT请求进行更新,但仍然获得了_mapping的上述输出
{
"_doc" : {
"properties" : {
"city" : {"type" : "text"}
}
}
}
我无法用不精确的词查询,因为它的类型是“关键字”,因为下面记录的实际值是“孟买”
{
"query": {
"bool": {
"must": {
"match": {
"city": {
"query": "Mumbi","minimum_should_match": "10%"
}
}
}
}
}
}
解决方法
最小匹配数
要返回的文档必须匹配的最小子句数
它表示子句的百分比,而不是字符串的百分比。浏览this文档以构架查询以获取预期结果。无效的查询返回无效的结果。
,下面的映射(问题中共有的内容)将“ city”存储为文本,将“ city.keyword”存储为关键字。
{
"myindex": {
"mappings": {
"properties": {
"city": {
"type": "text",// ==========> Store city as text
"fields": {
"keyword": {
"type": "keyword",// =========> store city.keyword as a keyword
"ignore_above": 256
}
}
}
}
}
}
}
您的情况是模糊搜索的用例,而不是 minimum_should_match 。
用于模糊搜索的ES文档: https://www.elastic.co/blog/found-fuzzy-search
尝试以下查询
{
"query": {
"match": {
"city": {
"query": "mubai","fuzziness": "AUTO"
}
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。