es查询例子

  • match 与term

match在匹配时会对所查找的关键词进行分词,然后按分词匹配查找,而term会直接对关键词进行查找。一般模糊查找的时候,多用match,而精确查找时可以使用term。
term相当于= 例如 username=zhangsan term
查询被用于精确值 匹配,这些精确值可能是数字、时间、布尔或者那些 not_analyzed 的字符串:
match_phrased 相当于like 例如username like zhangsan
相同点都不会对张三分词,match会分词,例如username=zhang or username=san.

  • match与match_phrased

1.非常直观的一点,对于同一个数据集,两者检索出来的结果集数量不一样;
2.对于match的结果,我们可以可以看到,结果的Document中description这个field可以包含“He is”,“He”或者“is”;
3.match_phrased的结果中的description字段,必须包含“He is”这一个词组;
4.所有的检索结果都有一个_score字段,看起来是当前这个document在当前搜索条件下的评分,而检索结果也是按照这个得分从高到低进行排序。
我们要想弄清楚match和match_phrase的区别,要先回到他们的用途:match是全文搜索,也就是说这里的搜索条件是针对这个字段的全文,只要发现和搜索条件相关的Document,都会出现在最终的结果集中,事实上,ES会根据结果相关性评分来对结果集进行排序,这个相关性评分也就是我们看到的_score字段;总体上看,description中出现了“He is”的Document的相关性评分高于只出现“He”或“is”的Document。(至于怎么给每一个Document评分,我们会在以后介绍)。
相关性(relevance)的概念在Elasticsearch中非常重要,而这个概念在传统关系型数据库中是不可想象的,因为传统数据库对记录的查询只有匹配或者不匹配。

  • text 与keyword

当初接触es,最惊讶就是他的版本速度发布太快,这次主要讨论keyword与text的区别
在es 2.*版本里面是没有这两个字段,只有string字段。
5.*之后,把string字段设置为了过时字段,引入text,keyword字段
这两个字段都可以存储字符串使用,但建立索引和搜索的时候是不太一样的
keyword:存储数据时候,不会分词建立索引
text:存储数据时候,会自动分词,并生成索引(这是很智能的,但在有些字段里面是没用的,所以对于有些字段使用text则浪费了空间)。

  • 分页排序
GET /logstash-crmv2-cc-qc-info-2019.12.01/_search
{
 "query": {
   "match_all": {}
 },
 "sort": {
   "@timestamp": {
     "order": "desc"
   }
 },
 "from":2,
 "size":2
}
```javascript
"bool": {
       "must":     { "match": { "status": 1 }},
       "must_not": { "match": { "language":  "french" }},
       "should":   [
           {"match": { "author": "John Tom" }},
           {"bool": {
               "must":     { "match": { "name": "friend" }},
               "must_not": { "match": { "content":  "star" }}
           }}
       ],
       "filter":   { "range": { "length" : { "gt" : 30 }} }
   }

-多条件查询注意数组

 {
  "query": {
    "bool": {
      "must": [
        {
          "range": {
            "bytes": {
              "ge": 60000,
              "le": 99999
            }
          }
        },
        {
          "match": {
            "message": "/api/user/daily_classroom/"
          }
        }
      ]
    }
  }
} 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值