• ES学习(三)--查询


    一、query string search
      A、搜索全部商品
        GET /ecommerce/_search
      B、 查询商品名为牙膏,价格降序排列
        GET /ecommerce/_search?q=name:yagao&sort=price:desc

    二、 query DSL
      A、 查询所有商品
        GET /ecommerce/_search
        {
          "query": {
            "match_all": {}
          }
        }
      B、 查询所有名称包含yagao的商品,同时按照价格降序排列
        GET /ecommerce/_search
        {
          "query": {
            "match": {
              "name": "yagao"
            }
          },
          "sort": [
            {
              "price": {
                "order": "desc"
              }
            }
          ]
        }

    三、 分页
      A、GET /ecommerce/_search
        {
          "query": {
            "match_all": {}
          },
          "from": 0,
          "size": 2
        }

    四、 查询指定字段
      A、GET /ecommerce/_search
        {
          "query": {
            "match_all": {}
          },
          "_source": ["name","desc","price"]
        }

    五、 query filter
      A、搜索商品名称包含牙膏且售价大于25的
        GET /ecommerce/_search
        {
          "query": {
            "bool": {
              "must": [
                {
                  "match": {
                    "name": "yagao"
                  }
                }
              ],
              "filter": {
                "range": {
                  "price": {
                    "gte": 25
                  }
                }
              }
            }
          }
        }

    六、 full-text search
      A、GET /ecommerce/_search
        {
          "query": {
            "match": {
              "producer": "yagao producer"
            }
          }
        }

    七、 phrase search
      A、GET /ecommerce/_search
        {
          "query": {
            "match_phrase": {
              "producer": "yagao producer"
            }
          }
        }

    八、 hightlight search
      A、GET /ecommerce/_search
        {
          "query": {
            "match": {
              "producer": "producer"
            }
          },
          "highlight": {
            "fields": {
              "producer": {}
            }
          }
        }

    九、组合多个搜索条件

      A、bool查询

        GET /article/_search
        {
          "query": {
            "bool": {
              "must": [
                {
                  "bool": {
                    "should": [
                      {
                        "match": {
                          "title": "hadoop"
                        }
                      },
                      {
                        "match": {
                          "author_id": "111"
                        }
                      }
                    ]
                  }
                }
              ],
              "should": [
                {
                  "match": {
                    "content": "elasticsearch"
                  }
                }
              ],

              "minimum_should_match": 4
            }
          }
        }

    十、multimatch

      GET /article/_search
      {
        "query": {
          "multi_match": {
            "query": "elasticsearch",
            "fields": ["title","content"]
          }
        }
      }

    十一、term query

      A、和match_phrase区别

        term不会分词,是直接拿去查,而match_phrase会分词然后再去匹配,要求文档包含这些分词且顺序一致。所以使用term要确保字段类型是keyword或者会有这个分词。

    十二、单纯使用过滤

      GET /article/_search
      {
        "query": {
          "constant_score": {
            "filter": {
              "range": {
                "FIELD": {
                  "gte": 10,
                  "lte": 20
                }
              }
            },
            "boost": 1.2
          }
        }
      }

    十三、将一个field索引两次解决字符串排序问题

      如果对一个字符串进行排序,结果往往不准确,因为分词后是多个单词,再排序就不是我们想要的结果了。通常是将一个string field建立两次索引,一个分词,一个进行搜索;一个部分词,用来进行排序。

  • 相关阅读:
    [Swift通天遁地]四、网络和线程-(13)创建一个Socket客户端
    [Swift通天遁地]四、网络和线程-(12)使用ReachabilitySwift实现对网络状态的检测
    [Swift通天遁地]四、网络和线程-(11)将服务器返回的JSON映射为实例对象
    [Swift]LeetCode972.相等的有理数 | Equal Rational Numbers
    [Swift]LeetCode971.翻转二叉树以匹配先序遍历 | Flip Binary Tree To Match Preorder Traversal
    [Swift]LeetCode969.煎饼排序 | Pancake Sorting
    [Swift]LeetCode970.强整数 | Powerful Integers
    [SQL]LeetCode262.行程和用户 | Trips and Users
    [Swift]LeetCode261.图验证树 $ Graph Valid Tree
    [Swift]LeetCode260. 只出现一次的数字 III | Single Number III
  • 原文地址:https://www.cnblogs.com/DjanFey/p/12112730.html
Copyright © 2020-2023  润新知