本文测试数据为官方提供的测试数据,导入方法在学习笔记本章节第一篇中:https://blog.youkuaiyun.com/qq_20051535/article/details/113242821
一、Term查询
返回在提供的字段中包含确切信息的文档内容。
您可以使用精确的值(例如价格,产品ID或用户名)利用 Term 查询查找文档。
比如我们查询年龄是33岁的:
GET /bank/_search
{
"query": {
"term": {
"age": 33
}
}
}
注意:
避免term对text字段使用查询。
默认情况下,Elasticsearch更改text字段的值作为analysis的一部分。这会使查找text字段值的精确匹配变得困难。
要搜索text字段值,请改用match查询。
二、文本精确查询
比如查询地址完整包含 435 Furman Street 的:
GET /bank/_search
{
"query": {
"match_phrase": {
"address": "435 Furman Street" //这个的搜索结果在改为435 Furman时依旧会展示
}
}
}
查询地址值必须是 435 Furman Street 的(精确匹配 keyword):
GET /bank/_search
{
"query": {
"match": {
"address.keyword": "435 Furman Street" //这个的搜索结果在改为435 Furman时不会展示
}
}
}
我们一般规定:全文检索字段用 match,其他非text字段匹配用term