elasticsearch笔记——词项查询

      全文搜索在执行查询之前会分析查询字符串,词项查询之前不会对查询字符串分词解析。词项查询通常用于结构化数据,比如数字、日期和枚举类。

一、term

      term query 用于词项搜索,查询之前不会对查询字符串进行分词解析,查询参数也不允许指定分词器。

{
	"query": {
		"term": {
			"title": "程序"
		}
	}
}

二、terms

      terms 查询是 term 查询的升级,可以用来查询文档中包含多个词的文档。

{
	"query": {
		"terms": {
			"title": ["程序","性能"]
		}
	}
}
查询title字段中包含 “程序” 或者 “性能”的文档

三、range

      range query 查询用于匹配在某一范围内的数值型、日期类型或者字符串类型字段的文档。range 查询只能查询一个字段,不能同时作用于多个字段。

range 查询支持的参数:
gt:大于
gte:大于等于
lt:小于
lte: 小于等于

{
	"query": {
		"range": {
			"price": {
				"gte": 50,
				"lte": 60
			}
		}
	}
}
查询价格字段的值大于等于50并且小于等于60的文档。

四、exists

      exists 查询会返回字段中至少有一个非空值的文档。

{
    "exists": {
        "field": "user"
    }
}
查询存在user字段并且值不为空的文档。

以下文档会匹配上面的查询:
(1) {"user":"jane"}
(2) {"user":""}
(3) {"user":"-"}
(4) {"user":["jane"]}
(5) {"user":["jane",null]}

以下文档不会匹配上面的查询:
(1) {"user":null}
(2) {"user":[]}
(3) {"user":[null]}
(4) {"foo":"bar"} 没有user字段

五、prefix

      prefix 查询用于查询某个字段的内容包含以查询字符串为前缀的关键词的文档。

{
	"query": {
		"prefix": {
			"title": "java"
		}
	}
}
查询 title字段中含有以java为前缀的关键词的文档

六、wildcard query

      通配符查询,支持单字符通配符和多字符通配符。? 用来匹配一个任意字符;* 用来匹配另个或者多个字符。

七、regexp

      正则表达式查询,查询字符串是一个正则表达式。

{
    "query" : {
                "regexp" : { "text(查询字段)" : "正则表达式" }  
            }
}

八、fuzzy query

      fuzzy 查询是通过计算查询字符串与文档的编辑距离来得到结果,使用fuzzy需要小号的资源比较大,查询效率比高,适用于需要模糊查询的场景。

    比如:用户在输入查询关键词的时候不小心把“javascript” 输成了 “javascritp”,使用fuzzy查询任然可以查询到含有“javascript”的文档。

      编辑距离:是指两个字符串之间,有一个转成另一个所需要的最少编辑操作次数,也称为 Levenshtein 距离。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。

九、ids

      ids 查询用于查询指定id的文档

{
	"query": {
		"ids": {
			"values": ["1","2","3"]
		}
	}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值