目录
目录
前言
数据准备
文档搜索
一、查询所有文档
二、全文检索
(1)全文检索
(2)自动纠错
三、范围搜索
四、短语检索
五、单词/词组搜索
六、复合搜索
前言
数据准备
PUT /students
{"mappings":{"properties":{"id": {"type": "integer","index": true},"name": {"type": "text","store": true,"index": true,"analyzer": "ik_smart"},"info": {"type": "text","store": true,"index": true,"analyzer": "ik_smart"}}}
}POST /students/_doc/
{"id":1,"name":"程序员","info":"I love you"
}POST /students/_doc/
{"id":2,"name":"美羊羊","info":"美羊羊是羊村最漂亮的人"
}POST /students/_doc/
{"id":3,"name":"懒羊羊","info":"懒羊羊的成绩不是很好"
}POST /students/_doc/
{"id":4,"name":"小灰灰","info":"小灰灰的年纪比较小"
}POST /students/_doc/
{"id":5,"name":"沸羊羊","info":"沸羊羊喜欢美羊羊"
}POST /students/_doc/
{"id":6,"name":"灰太狼","info":"灰太狼是小灰灰的父亲,每次都会说我一定会回来的"
}
文档搜索
GET /索引/_search
{"query":{搜索方式:搜索参数}
}
——————————————————————————————————————————
一、查询所有文档
{"query":{"match_all":{}}
}
二、全文检索
(1)全文检索
{"query":{"match":{搜索字段:搜索条件}}
}
(2)自动纠错
注:在搜索时关键词有可能会输入错误,ES搜索提供了自动纠错功能,即ES的模糊查询。使用match方式可以实现模糊查询。模糊查询对中文的支持效果一般,我们使用英文数据测试模糊查询。
{"query": {"match": {"域名": {"query": 搜索条件,"fuzziness": 最多错误字符数,不能超过2}}}
}
三、范围搜索
范围搜索。对数字类型的字段进行范围搜索
{"query":{"range":{搜索字段:{ "gte":最小值,"lte":最大值} }}
}
gt/lt:大于/小于
gte/lte:大于等于/小于等于
四、短语检索
搜索条件不做任何分词解析,在搜索字段对应的倒排索引中精确匹配。
{"query":{"match_phrase":{搜索字段:搜索条件}}
}
五、单词/词组搜索
term/terms:单词/词组搜索。搜索条件不做任何分词解析,在搜索字段对应的倒排索引中精确匹配
{"query":{"term":{ 搜索字段: 搜索条件}}
}{"query":{"terms":{ 搜索字段: [搜索条件1,搜索条件2]}}
}
六、复合搜索
简单来说就是支持多个条件搜索,有三个:必须满足,满足其中一个,必须都不满足!
GET /索引/_search
{ "query": { "bool": { // 必须满足的条件 "must": [ 搜索方式:搜索参数,搜索方式:搜索参数],// 多个条件有任意一个满足即可"should": [搜索方式:搜索参数,搜索方式:搜索参数],// 必须不满足的条件"must_not":[搜索方式:搜索参数,搜索方式:搜索参数]} }
}
举例:
必须有“成绩”关键字,而且id是大于等于1小于等于3(可以多个条件一起的,如必须满足什么,必须不满足什么)
GET /students/_search
{"query": {"bool": {"must": [{"term": {"info":"成绩"}},{"range":{"id":{"gte": 1,"lte": 3}}}]}}
}