zoukankan      html  css  js  c++  java
  • 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建立两次索引,一个分词,一个进行搜索;一个部分词,用来进行排序。

  • 相关阅读:
    http缓存机制与原理
    BFC与浮动
    05ICMP协议与ARP协议(IP协议中重要协议)
    04IP编址(网络层)
    03以太网帧结构(链路层 IEEE802.3)
    02传输介质简介
    shell 脚本 2
    shell 脚本 1
    shell 中时间 表达
    sed 行编辑器
  • 原文地址:https://www.cnblogs.com/DjanFey/p/12112730.html
Copyright © 2011-2022 走看看