es-花式查询

一.复杂操作搜索select(排序、分页、高亮、模糊查询、精准查询!)

1.json格式查询

在这里插入图片描述

GET test2/user/_search
{
  "query": {
    "match": {
      "name": "亢学强"
    }
  }
}

在这里插入图片描述
我又添加了一条数据:
在这里插入图片描述
继续查询:
在这里插入图片描述

2.结果的过滤:只搜索name和age
GET test2/user/_search
{
  "query": {
    "match": {
      "name": "亢学强"
    }
  },
   "_source": ["name","age"]
}

在这里插入图片描述

3.sort排序

sort根据年龄降序排序desc

GET test2/user/_search
{
  "query": {
    "match": {
      "name": "亢学强"
    }
  },
   "_source": ["name","age"]
  , "sort": [
    {
      "age": {
        "order": "desc"
      }
    }
  ]
}

在这里插入图片描述
sort根据年龄升序排序asc

GET test2/user/_search
{
  "query": {
    "match": {
      "name": "亢学强"
    }
  },
   "_source": ["name","age"]
  , "sort": [
    {
      "age": {
        "order": "asc"
      }
    }
  ]
}

在这里插入图片描述

4.分页查询
GET test2/user/_search
{
  "query": {
    "match": {
      "name": "亢学强"
    }
  },
   "_source": ["name","age"]
  , "sort": [
    {
      "age": {
        "order": "asc"
      }
    }
  ],
  "from": 0,
  "size": 1
}

在这里插入图片描述

5.布尔值查询

must(and),所有的条件都要符合 where id =1 and name=xxxx

GET test2/user/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "name": "亢学强"
          }
        },
        {
          "match": {
            "age": "18"
          }
        }
      ]
     
    }
  }
}

在这里插入图片描述
should(or),所有的条件都要符合 where id =1 or name=xxxx 只要符合其中一个条件就回查询出来

GET test2/user/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "match": {
            "name": "亢学强"
          }
        },
        {
          "match": {
            "age": "18"
          }
        }
      ]
    }
  }
}

在这里插入图片描述
must_not不是
在这里插入图片描述

6.fillter过滤

在这里插入图片描述

二、关于分词

精确查询!
term查询是直接通过倒排索引制定的词条进行精确查找的

  • term,直接查询精确的
  • match,会使用分词解析!(先分析文档,然后再通过分析的文档进行查询)

先建立索引:

PUT testdb 
{
  "mappings": {
    "properties": {
      "name": {
        "type": "text"
      },
      "desc":{
        "type": "keyword"
      }
    }
  }
}

添加数据:

PUT testdb/_doc/1
{
  "name": "狂神说Java name",
  "desc": "狂神说Java desc"
}
PUT testdb/_doc/2
{
  "name": "狂神说Java name",
  "desc": "狂神说Java 2"
}

查看索引的映射规则:
在这里插入图片描述
keyword:
在这里插入图片描述
standard
在这里插入图片描述
name的type是text,只要包含查询的自就会查到:
在这里插入图片描述
desc是keyword类型,是个整体只能精确查找,不会经过分词器 解析:
在这里插入图片描述
精确查询多个值:

GET testdb/_search
{
  "query": {
  "bool": {
    "should": [
      {
        "term": {
            "t1": "22"
        }
      },
      {
        "term": {
            "t1": "33"
        }
      }
    ]
  }
  }
}

在这里插入图片描述

三、高亮查询

高亮查询就是查询出的字体标红(突出显示出来)
例如京东:搜索“咖啡”
在这里插入图片描述
练习:

GET testdb/_search
{
  "query": {
    "match": {
      "name": "狂神"
    }
  },
  "highlight": {
    "fields": {
      "name": {}
    }
  }
}

发现下图狂神都带了标签<em>狂</em><em>神</em>
在这里插入图片描述
自定义高亮:

GET testdb/_search
{
  "query": {
    "match": {
      "name": "狂神"
    }
  },
  "highlight": {
    "pre_tags": "<p class='key' style='color:red'>", 
    "post_tags": "</p", 
    "fields": {
      "name": {}
    }
  }
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值