笔记九:Request Body 跟 Query DSL 简介

Request Body Search

  • 将查询语句通过HTTP Request Body 发送给Elasticsearch
  • Query DSL
    POST /movies,404_idx/_search?ignore_unavailable=true
    {
    "profile":true,
    "query":{
       "match_all" : {}  // 查询所有的文档
    }
    }

    分页

  • From 从 0 开始 默认返回10个结果
  • 获取靠后的翻页,成本较高
    POST /kibana_sample_data_ecommerce/_search
    {
    "from":10,
    "size":20
    "query":{
       "match_all":{}
    }

排序

  • 最好在“数字型”与“日期型”字段上排序
  • 因为对于多值类型或分析过的字段排序,系统会选一个值,无法得知该值
    GET kinaba_sample_data_ecommerce/_search
    {
      "sort":[{"order_date":"desc}],
      "from":10,
      "size":5,
       "query":{
       "match_all":{}
    }

    _source filtering

  • 如果_source 没有存储,那就只返回匹配的文档元数据
  • _source 支持使用通配符
  • _source[“name* “,”desc*”]

ES 笔记九:Request Body 跟Query DSL简介

脚本字段

  • 能算出新的字段
  • 用例:订单中有不同的汇率,需要结合汇率对订单价格进行排序
#脚本字段
GET kibana_sample_data_ecommerce/_search
{
  "script_fields": {
    "new_field": {
      "script": {
        "lang": "painless",
        "source": "doc['order_date'].value+'hello'"
      }
    }
  },
  "query": {
    "match_all": {}
  }
}

使用查询表达式 - Match

POST movies/_search
{
  "query": {
    "match": {
      "title": "Last Christmas"  // 相当于 OR 可出现其中1个
    }
  }
}

POST movies/_search
{
  "query": {
    "match": {
      "title": {
        "query": "Last Christmas",
        "operator": "AND"
      }
    }
  }
}

短语搜索 - Match Phrase

POST movies/_search
{
  "query": {
    "match_phrase": {
      "title":{
        "query": "one love"
        "slop":1 //中间可以一个其他词
      }
    }
  }
}
es
本作品采用《CC 协议》,转载必须注明作者和本文链接
快乐就是解决一个又一个的问题!
CrazyZard
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!