Elasticsearch-文档查询

Elasticsearch-文档查询

官网-深入搜索

数据准备

URI查询

  • 简单查询

    mall/goods/1
    

  • 条件查询

    GET mall/goods/_search?q=b_name: "如何"
    

Body复杂查询

  • 匹配查询

    GET mall/goods/_search
    {
      "query": {
        "match": {
          "b_name": "怎样征服美丽少女"
        }
      }
    }
    

  • 查询的结果只展示指定的字段

    GET mall/goods/_search
    {
      "query": {
        "match": {
          "b_name": "怎样征服美丽少女"
        }
      },
      "_source": ["b_name","author"]
    }
    

  • 排序

    _score 不被计算, 因为它并没有用于排序
    
    GET mall/goods/_search
    {
      "query": {
        "match": {
          "b_name": "怎样征服美丽少女"
        }
      },
      "_source": ["b_name","author","price"],
      "sort": [
        {
          "price": {
            "order": "desc"
          }
        }
      ]
    }
    

  • 分页

    GET mall/goods/_search
    {
      "query": {
        "match": {
          "b_name": "怎样征服美丽少女"
        }
      },
      "_source": ["b_name","author","price"],
      "sort": [
        {
          "price": {
            "order": "desc"
          }
        }
      ],
      "from": 0,
      "size": 2
    }
    

  • 布尔查询

    bool:
    must,should,must_not,filter

    • 必须同时匹配多个条件查询,相当于and

      GET mall/goods/_search
      {
        "query": {
          "bool": {
            "must": [
              {
                "match": {
                  "b_name": "美丽少女"
                }
              },
              {
                "match": {
                  "price": "28"
                }
              }
            ]
          }
        }
      }
      

    • 只要符合多个条件中的一个条件,相当于or

      GET mall/goods/_search
      {
        "query": {
          "bool": {
            "should": [
              {
                "match": {
                  "b_name": "美丽少女"
                }
              },
              {
                "match": {
                  "price": "28"
                }
              }
            ]
          }
        }
      }
      

    • 查询,not

      GET mall/goods/_search
      {
        "query": {
          "bool": {
            "must_not": [
              {
                "match": {
                  "b_name": "美丽少女"
                }
              },
              {
                "match": {
                  "price": "23"
                }
              }
            ]
          }
        }
      }``
      
      

    • 过滤查询
      gte:>=
      lte:<=

      GET mall/goods/_search
      {
        "query": {
          "bool": {
            "must": [
              {
                "match": {
                  "b_name": "如何征服"
                }
              }
            ],
            "filter": {
              "range": {
                "price": {
                  "gte": 10,
                  "lte": 40
                }
              }
            }
          }
        }
      }
      

    • 快速模糊匹配查询(多个条件用空格隔开),相当于 or

      GET mall/goods/_search
      {
        "query": {
          "match": {
            "b_name": "如何 骗"
          }
        },
        "_source": ["b_name"]
      }
      

  • 补充

    • 多字段匹配查询:multi_match

      most_fields:在多个字段中匹配的越多,排名越靠前
      best_fields【默认】:能完全匹配的文档,排名越靠前
      cross_fields:查询越分散,排名越靠前
      

    • query_string

    • 短语搜索:match_phrase
      参考:https://zhuanlan.zhihu.com/p/142641300

      match_phrase查询分析文本并根据分析的文本创建一个短语查询。
      match_phrase会将检索关键词分词。
      match_phrase的分词结果必须在被检索字段的分词中都包含,而且顺序必须相同,而且默认必须都是连续的。
      比如搜索:"rock climbing",必须同时包含,并且两个单词紧挨着
      

  • 组合查询案例

    查询必须有,必须有;不能有;或有

posted @ 2021-06-22 00:21  扬帆去远航  阅读(134)  评论(0)    收藏  举报