Es学习第七课, term、terms、match等基本查询语法

term、terms查询

term query会去倒排索引中寻找确切的term,它并不知道分词器的存在,这种查询适合keyword、numeric、date等明确值的

term:查询某个字段里含有某个关键词的文档

GET /customer/doc/_search/
{
  "query": {
    "term": {
      "title":   "blog"
    }
  }
}

terms:查询某个字段里含有多个关键词的文档

GET /customer/doc/_search/
{
  "query": {
    "terms": {
      "title":  [ "blog","first"]
    }
  }
}

match查询

match query 知道分词器的存在,会对field进行分词操作,然后再查询

GET /customer/doc/_search/
{
  "query": {
    "match": {
      "title":  "my ss"   #它和term区别可以理解为term是精确查询,这边match模糊查询;match会对my ss分词为两个单词,然后term对认为这是一个单词
    }
  }
}

match_all:查询所有文档

GET /customer/doc/_search/
{
  "query": {
    "match_all": {}
  }
}

multi_match:可以指定多个字段

GET /customer/doc/_search/
{
  "query": {
    "multi_match": {
      "query" : "blog",
      "fields":  ["name","title"]   #只要里面一个字段包含值 blog 既可以
    }
  }
}

match_phrase:短语匹配查询

ES引擎首先分析查询字符串,从分析后的文本中构建短语查询,这意味着必须匹配短语中的所有分词,并且保证各个分词的相对位置不变

_source:当我们希望返回结果只是一部分字段时,可以加上_source

GET /customer/doc/_search/
{
  "_source":["title"],  #只返回title字段
  "query": {
    "match_all": {}
  }
}

排序

使用sort实现排序(类似sql):desc 降序,asc升序

fuzzy实现模糊查询

value:查询的关键字

boost:查询的权值,默认值是1.0

min_similarity:设置匹配的最小相似度,默认值0.5,对于字符串,取值0-1(包括0和1);对于数值,取值可能大于1;对于日期取值为1d,1m等,1d等于1天

prefix_length:指明区分词项的共同前缀长度,默认是0

GET /customer/doc/_search/
{

  "query": {
    "fuzzy": {
      "name": {
        "value": "blg"
      }
    }
  }
}

#返回:
{
  "took": 8,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": 1,
    "max_score": 0.19178805,
    "hits": [
      {
        "_index": "customer",
        "_type": "doc",
        "_id": "1",
        "_score": 0.19178805,
        "_source": {
          "name": "blog",
          "tags": [
            "testing"
          ],
          "title": "i am a doc"
        }
      }
    ]
  }
}

原文地址:https://www.cnblogs.com/kakatadage/p/9958932.html

时间: 2024-07-31 00:33:55

Es学习第七课, term、terms、match等基本查询语法的相关文章

Linux学习第七课-文本处理工具及正则表达式

Linux第七节课 ----------------------------------------------------------------------------------------------------------------------------------------------- 原文地址:http://blog.51cto.com/13873498/2152313

Es学习第六课, ES基本搜索_search

前面几课ES的基本概念.安装和分词都讲过了,下面我们就来实战一下ES的核心功能-搜索,这节课我们主要讲的是基本搜索 _search(注意:ES的关键字都要加前缀_,所以我们在定义索引.类型名称时不要带_). 我们先通过kibana插入几条三个文档 PUT /customer/doc/1?pretty { "name": "John Doe" } POST /customer/doc/ { "title": "My second blog

Struts2学习第七课 通配符映射

一个WEB应用可能有长百上千个action声明,可以利用struts提供的通配符映射机制吧多个彼此相识的映射关系简化为一个映射关系. 通配符映射规则: --若找到多个匹配,没有通配符的那个将胜出(精确匹配) --若指定的动作不存在,struts将会尝试把这个URI与任何一个包含着通配符*的动作名进行匹配 --被通配符匹配到的URI字符串的子串可以用{1},{2}来引用,{1}匹配第一个子串,{2}匹配第二个子串 --{0}匹配整个URI --若struts找到的带有通配符的匹配不止一个,则按先后

Struts2学习第七课 OGNL

关于值栈: helloWorld时,${productName}读取productName值,实际上该属性并不在request等域中,而是从值栈中获取的. ValueStack: 可以从ActionContext中获取值栈对象 值栈分为两个逻辑部分: 1.Map栈:实际上是OgnlCOntext类型,是个Map,也是对ApplicationContext的一个引用,里边保存着各种Map,requestMap,sessionMap,applicationMap,parametersMap,attr

Struts2学习第七课 动态方法调用

动态方法调用:通过url动态调用Action中的方法. action声明: <package name="struts-app2" namespace="/" extends="struts-default"> <action name="Product" class="org.simpleit.app.Product"> </package> URI: --/strut

Web前端学习-第七课HTML篇

Q15:HTML5有哪些API?结合文字和代码说明主要API.(P683) requestAnimationFrame(): 早期动画循环(setInterval()): mozRequstAnimation:告诉浏览器某些JavaScript代码将要执行动画.接受一个参数,即在重回屏幕前调用的一个函数,负责改变下一次重绘时的DOM样式. webkitRequestAnimationFrame与meRequestAnimationFrame Page Visibility API Documen

Struts2学习第七课 ActionSupport

com.opensymphony.xwork2.ActionSupport类是默认的Action类,如果某个Action节点没有配置class属性,则ActionSupport即为待执行的Action类,而execute方法即为要默认执行的方法. <action name="testActionSupport"> <result>/testActionSupport.jsp</result> </action> 等同于 <actio

Redis学习第七课:键值命令和服务器命令

Redis键值相关命令                                                                                                                                   keys:返回满足给定pattern的所有key.(用法:keys pattern表达式) exists:确认一个key是否存在.(用法:exists key) del:删除一个key.(用法:del key) ex

【原创】bootstrap框架的学习 第七课 -[bootstrap表格]

Bootstrap 表格 标签 描述 <table> 为表格添加基础样式. <thead> 表格标题行的容器元素(<tr>),用来标识表格列. <tbody> 表格主体中的表格行的容器元素(<tr>). <tr> 一组出现在单行上的表格单元格的容器元素(<td> 或 <th>). <td> 默认的表格单元格. <th> 特殊的表格单元格,用来标识列或行(取决于范围和位置).必须在 <