es学习之高级查询

本文介绍了Elasticsearch(ES)中的高级查询技巧,包括term、terms、match、range、bool和fuzzy查询,并展示了如何自定义mapping以设定字段的数据类型和index的设置。示例中详细演示了如何进行范围查询、bool组合查询以及模糊查询,并提供了创建自定义mapping的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mapping:es中会给每个文档的每个字段一个数据类型,es会默认的帮我们完成这一步

但是若我们需要自己定义一个mapping,也就是一个映射关系,我们需要自己定义:

settings表示对该index的设置:该index有三个shard,每个shard有一个副本作为备份

query查询:

term和terms不知道分词器的存在,你所查找的内容,es都会将他视作一个完整的字段去查询,适合关键子查询

match查询:

match查询会去匹配你所查找的内容在倒排索引中是否包含,若包含,就返回,跟term,terms不同

指定查询某个字段:

范围查询:使用range关键字 gt表示大于 ,gte表示大于等于

GET account/index/_search
{
  "query": {
    "range": {
      "age": {
        "gt": 21,
        "lt": 30
      }
    }
  }
}

bool查询:must,shuld,must_not

match也可以是term,range等

GET account/index/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
           "name": "lc"
          }
        }
      ]
    }
  }
}

fuzzy模糊查询:

GET /account/index/_search
{
  "query": {
    "fuzzy": {
      "des": "boy"
    }
  }
}

自定义mapping:也就是定义type的类型

PUT /users
{
  "settings": {
    "number_of_shards": 5,
    "number_of_replicas": 1
  },
  "mappings": {
    "user":{
      "properties": {
        "name":{"type":"text"},
        "age":{"type": "integer"},
        "first_name":{"type": "text"},
        "second_name":{"type": "text"}
      }
    }
  }
}


下面的做法会给user添加一个mapping:

put users/user/1
{
  "name":"lc",
  "ppp":"pp"
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值