有如下几种

  1. match_all 查询所有
  2. match 分词查询
  3. term 词条查询
  4. fuzzy 模糊查询
  5. range 范围查询

查询所有(match_all)

GET my_index/_search
{
  "query": {
    "match_all": {}
  }
}
  • query:代表查询对象
  • match_all:代表查询所有文档

效果

 

分词查询(match)

match类型查询,会把查询条件进行分词,然后进行查询,多个词条之间默认是or的关系

GET /my_index/_search
{
  "query": {
    "match": {
      "title": "小米电视"
    }
  }
}
  • title:字段名
  • 小米电视:搜索条件

 

如果需要更精确的查找,希望多个词条之间的关系是and的关系,可以这样写

GET my_index/_search
{
  "query": {
    "match": {
      "title": {
        "query": "小米电视",
        "operator": "and"
      }
    }
  }
}

这样就只有同时包含小米和电视的词条才会被搜索到

 

 

 

 

 

词条匹配 (term)

term词条查询,查询的是一个词条,不会被分词,可以是keyword类型的字符串、数值、或者text类型字段中分词得到的某个词条

GET my_index/_search
{
  "query": {
    "term": {
      "price": 2999.00
    }
  }
}

 

 

模糊查询(fuzzy)

一个新的概念,叫做编辑距离,一个词条变为另一个词条需要修改的次数,比如,facebool要修改为facebook需要做的是把l修改为k,一次即可,编辑距离就是1

模糊查询允许用户查询内容与实际内容存在偏差,但是编辑距离不能超过2

GET my_index/_search
{
  "query": {
    "fuzzy": {
      "title": {
        "value": "小米",
        "fuzziness": 1
      }
    }
  }
}

可以看到,结果中包含小米、大米都被搜索到了

 

 

范围查询(range)

range查询找出那些落在指定区间内的数字或者时间

  • gt 大于
  • gte 大于等于
  • lt 小于
  • lte 小于等于
GET my_index/_search
{
  "query": {
    "range": {
      "price": {
        "gte": 2000,
        "lt": 3000
      }
    }
  }
}

 

 布尔查询(bool)

bool把各种其他查询通过must(与)、must_not(非)、should(或)的方式进行组合

GET my_index/_search
{
  "query": {
    "bool": {
      "must": {
        "match": {
          "title": "小米"
        }
      },
      "must_not": {
        "match": {
          "title": "电视"
        }
      }
    }
  }
}

要小米,但是不要电视

 

原文地址:http://www.cnblogs.com/xulinjun/p/16913637.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性