Elasticsearch 常用查询
本文基于es 7.4版本文档
match:全文查询
{
"query": {
"match" : {
"message" : {
"query" : "this is a test"
}
}
}
}
exists:查询存在的字段
{
"query": {
"exists": {
"field": "user"
}
}
}
must_not:查询不存在的字段
{
"query": {
"bool": {
"must_not": {
"exists": {
"field": "user"
}
}
}
}
}
ids:跟据id查询
每个文档都有一个唯一标识它的 _id,该 _id 已加入索引,以便可以使用 GET API 或 ids 查询来查找文档。
{
"query": {
"ids" : {
"values" : ["1", "4", "100"]
}
}
}
prefix:前缀查询
{
"query": {
"prefix" : { "user" : "ki" }
}
}
range: 查询范围
gt:大于
gte:大于等于
lt:小于
lte:小于等于
format:用于转换查询中的日期值的日期格式。
默认情况下,Elasticsearch 使用 映射中提供的日期格式。 该值会覆盖该映射格式。
{
"query": {
"range" : {
"age" : {
"gte" : 10,
"lte" : 20,
"boost" : 2.0
}
}
}
}
term:术语查询
返回在提供的字段中包含确切术语的文档。
您可以使用术语查询根据精确值(例如价格、产品 ID 或用户名)查找文档。
避免对文本的字段使用 term查询。
默认情况下,Elasticsearch 会更改文本字段的值作为分析的一部分。 这可能会使查找文本字段值的精确匹配变得困难。
要搜索普通文本字段值,建议用match查询。
{
"query": {
"term": {
"user": {
"value": "Kimchy",
"boost": 1.0
}
}
}
}
terms:多术语查询
{
"query" : {
"terms" : {
"user" : ["kimchy", "elasticsearch"],
"boost" : 1.0
}
}
}
Wildcard: 通配符查询
?,匹配任何单个字符
*,可以匹配零个或多个字符,包括空字符
注意:避免以 * 或 ? 开头的模式。 这可能会增加查找匹配项所需的迭代次数并降低搜索性能。
{
"query": {
"wildcard": {
"user": {
"value": "ki*y",
"boost": 1.0,
"rewrite": "constant_score"
}
}
}
}
fuzzy: 模糊查询
匹配相似或纠正的单词
改变字符(box→fox)
删除一个字符(black→lack)
插入一个字符(sck→sick)
调换两个相邻字符(act → cat)
{
"query": {
"fuzzy": {
"user": {
"value": "ki"
}
}
}
}