Elasticsearch数据库中存在数据,但是使用term无法查到,
原因Elasticsearch 对文本字段的处理有两种主要类型:text 和 keyword,
当你对 text 类型的字段使用 match 查询时,Elasticsearch 会自动对查询字符串进行分词,并在倒排索引中查找匹配的词项,
解决办法是需要指定不分词,在field字段名称后面加上.keyword
修改前脚本:
GET /hotel/_search
{"query": {"term": {"city": "上海"}}
}
修改后脚本:
GET /hotel/_search
{"query": {"term": {"city.keyword": "上海"}}
}