• Request Body Search


    基本用法

    from:偏移量,等价mysql offset
    size:显示条数,等价mysql limit
    match_all:无条件查找

    POST /movies/_search
    {
      "from": 0,
      "size": 10,
      "query": {
      "match_all": {}
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    查询显示指定字段

    通过 _source : [field…] 指定查询显示哪些字段

    POST /movies/_search
    {
      "from": 0,
      "size": 10,
      "_source": ["title","year"], 
      "query": {
      "match_all": {}
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    排序

    通过 sort 来指定按什么排序

    POST /movies/_search
    {
      "from": 0,
      "size": 10,
      # 按照 年倒序,id正序排
      "sort":[{"year":"desc"},{"_id":"asc"}],
      "_source": ["title","year"], 
      "query": {
      "match_all": {}
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    match 条件查询

    将match_all 替换成 match 进行有条件的查找
    可以指定操作符

    POST /movies/_search
    {
      "from": 0,
      "size": 10,
      "sort":[{"year":"desc"},{"_id":"asc"}],
      "_source": ["title","year"], 
      "profile": "true", 
      "query": {
        "match": {
          # 查询字段
          "title": {
            # 查询字段值
            "query": "Beautiful Mind",
            # 操作,决定单词之间的关系
            # and 要求顺序一致,词为 “Beautiful Mind”
            # or 包含 Beautiful 或 Mind 即可
            "operator": "and"
          }
        }
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    match_parase 条件查询

    和match比较最明显的区别:
    match: 不指定operator是or的关系
    match_parase 不设置其它则是and的关系

    POST /movies/_search
    {
      "from": 0,
      "size": 10,
      "sort":[{"year":"desc"},{"_id":"asc"}],
      "_source": ["title","year"], 
      "profile": "true", 
      "query": {
        "match_phrase": {
          "title": {
            "query": "one Love",
            # title:"one love"~1"
            # slop:1 允许one Love 中添加一个词补充
            # 可以匹配 one I Love
            "slop": 1
          }
        }
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    query string

    query 中 可以使用操作符

    POST /movies/_search 
    {
      "query":{
        "query_string": {
          # 查询字段
          "fields": ["title"],
          "query": "Beautiful AND Mind",
        }
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    simple query string

    query中的 AND,OR,NOT 会被当作词,但是可以使用其它符号代替
    a. + 代替 AND
    b. - 代替 NOT
    c. | 代替 OR

    POST /movies/_search
    {
      "query":{
        "simple_query_string": {
          "query": "Beautiful  +Mind",
          "fields": ["title"]
        }
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    或者通过 default_operator 指定操作符

    POST /movies/_search
    {
      "query":{
        "simple_query_string": {
          "query": "Beautiful Mind",
          "fields": ["title"],
          "default_operator": "AND"
        }
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
  • 相关阅读:
    JSCORE day_02(7.1)
    基于PHP+MySQL健身俱乐部系统的设计与实现
    Linux之免密登录及ansible安装(超详解)
    并网型虚拟同步发电机控制仿真(Matlab&simulink仿真实现)
    天鹰优化的半监督拉普拉斯深度核极限学习机用于分类
    神经网络案例编程实战
    使用ChatGLMTokenizer处理json格式数据
    Java代码审计之ofcms
    Python Numpy知识点
    动态规划 | 斐波那契数列、爬楼梯 | leecode刷题笔记
  • 原文地址:https://blog.csdn.net/qq_29744347/article/details/126506232