1.前言
昨天,学习了组合查询的查询方式。今天来看看全文查询这一章节拥有哪些神奇的查询方法
2.各种全文查询方式演练
2.1 intervals 查询 (间隔查询?)
查询体结构
"intervals":{
"查询的字段":{
"match":{ 各自的参数},
"prefix":{},
"wildcard":{},
"fuzzy":{},
"all_of":{},
"any_of":{}
}
}
间隔查询的作用: 可以规定查询内容的各个词项 在 文档中的一个间隔和先后顺序。
2.1.1match 查询
有ordered:true,搜索面袋它能出来,搜索 袋面呢???
搜袋面是没有的。
ordered:true : 分词后 面 袋, 两个的位置一定是 面 前 袋后 。。
2.1.2 prefix查询
2.1.3wildcard查询 通配符查询
2.1.4模糊查询
2.1.5 all_of 查询 any_of查询
里面会规定一个或多个 intervals 规则 即 intervals 的一个数组。 all_of是吗满足 intervals中的所有, any_of是任一满足即可
匹配酸菜,酸菜必须紧挨着,接着要在酸菜后面有一个 牛绒面,或 cold poridge
2.2match查询(匹配查询)
这个查询我要好好的整理一下,我一定要说明白。
match查询的流程: 用户输入查询内容, 查询内容分词, 匹配上的文档查询出来。
请求体结构
GET /_search
{
"query": {
"match" : {
"字段名" : {
"query" : "搜索内容",
"analyzer":"选取搜索内容的分词器",
"fuzziness":"模糊搜索的,最大编辑距离一般AUTO",
其他参数用到时看文档
}
}
}
}
2.3multi_match 多匹配查询
在用户搜索商品时,你也不知道用户输入的是 商品名称 还是店铺名称 还是 …. 嘿嘿嘿
所以,应该指定多个自字段
2.4 match_bool_prefix
2.5 match_phare
从分词结果中创建短语搜索 。不是单个词搜索
搜索 xx开头的短语
2.6Query String
搜索 Apple 或 统一 为词条 分词后全文检索 。 针对各个字段
2.7Match_all
查询所有
3.精准查找
3.1exist
1.查找存在某一个字段的文档
GET /_search
{
"query": {
"exists": {
"field": "字段名"
}
}
}
3.2fuzzy
模糊搜索
GET /_search
{
"query": {
"fuzzy": {
"字段名": {
"value": "模糊的字段值"
}
}
}
}
3.3IDs
每个文档又个_id, 可以指定查询
3.4Prefix
这个我解释一下,不是字段的前缀,而是 字段分词后的 各个词项 是否又 和 指定相同的前缀
3.5Range
指定范围
GET /_search
{
"query": {
"range" : {
"sales" : {
"gte" : 10,
"lte" : 20
}
}
}
}