美文网首页
elasticsearch中的查询

elasticsearch中的查询

作者: dark68 | 来源:发表于2021-05-27 08:23 被阅读0次

    1.普通查询

    GET /products/_doc/_search
    {
      "query":{
        "match":{
          "name":"HUAWEI"
        }
      }
    }
    

    返回的结果:

    {
      "took" : 948,
      "timed_out" : false,
      "_shards" : {
        "total" : 1,
        "successful" : 1,
        "skipped" : 0,
        "failed" : 0
      },
      "hits" : {
        "total" : {
          "value" : 2,
          "relation" : "eq"
        },
        "max_score" : 14.68131,
        "hits" : [
          {
            "_index" : "products",
            "_type" : "_doc",
            "_id" : "200039",
            "_score" : 14.68131,
            "_source" : {
              "brand_id" : 1,
              "create_time" : "2021-05-21T00:00:00Z",
              "id" : 200039,
              "last_time" : "2021-05-21T00:00:00Z",
              "long_name" : "HUAWEi Mate Book 14 16G 512G  ",
              "name" : "HUAWEi Mate Book 14",
              "price" : 9090,
              "review_count" : 11111,
              "shop_id" : 1,
              "sold_count" : 12345,
              "status" : 1,
              "three_category_id" : 3
            }
          },
          {
            "_index" : "products",
            "_type" : "_doc",
            "_id" : "200040",
            "_score" : 14.68131,
            "_source" : {
              "brand_id" : 1,
              "create_time" : "2021-05-21T00:00:00Z",
              "id" : 200040,
              "last_time" : "2021-05-21T00:00:00Z",
              "long_name" : "HUAWEi Mate Book 13 16G 512G  ",
              "name" : "HUAWEi Mate Book 13",
              "price" : 9090,
              "review_count" : 11111,
              "shop_id" : 1,
              "sold_count" : 12345,
              "status" : 1,
              "three_category_id" : 3
            }
          }
        ]
      }
    }
    

    2.查询指定字段:查询name和price两个字段

    GET /products/_doc/_search
    {
      "query":{
        "match":{
          "name":"HUAWEI"
        }
      },
      "_source":["name","price"]
    }
    

    查询出的结果:

    {
      "took" : 1,
      "timed_out" : false,
      "_shards" : {
        "total" : 1,
        "successful" : 1,
        "skipped" : 0,
        "failed" : 0
      },
      "hits" : {
        "total" : {
          "value" : 2,
          "relation" : "eq"
        },
        "max_score" : 14.68131,
        "hits" : [
          {
            "_index" : "products",
            "_type" : "_doc",
            "_id" : "200039",
            "_score" : 14.68131,
            "_source" : {
              "price" : 9090,
              "name" : "HUAWEi Mate Book 14"
            }
          },
          {
            "_index" : "products",
            "_type" : "_doc",
            "_id" : "200040",
            "_score" : 14.68131,
            "_source" : {
              "price" : 9090,
              "name" : "HUAWEi Mate Book 13"
            }
          }
        ]
      }
    }
    

    3.排序:默认是根据_score匹配分值进行降序排序的,但如果我们指定一个字段进行asc或者desc排序呢?这里我使用price来进行降序

    GET /products/_doc/_search
    {
      "query":{
        "match":{
          "name":"Book"
        }
      },
      "_source":["name","price"],
      "sort":[
        {
          "price":{
            "order":"desc"
          }
        }  
      ]
    }
    

    查询出的结果:

    {
      "took" : 1,
      "timed_out" : false,
      "_shards" : {
        "total" : 1,
        "successful" : 1,
        "skipped" : 0,
        "failed" : 0
      },
      "hits" : {
        "total" : {
          "value" : 3,
          "relation" : "eq"
        },
        "max_score" : null,
        "hits" : [
          {
            "_index" : "products",
            "_type" : "_doc",
            "_id" : "200039",
            "_score" : null,
            "_source" : {
              "price" : 9090,
              "name" : "HUAWEi Mate Book 14"
            },
            "sort" : [
              9090.0
            ]
          },
          {
            "_index" : "products",
            "_type" : "_doc",
            "_id" : "200040",
            "_score" : null,
            "_source" : {
              "price" : 9090,
              "name" : "HUAWEi Mate Book 13"
            },
            "sort" : [
              9090.0
            ]
          },
          {
            "_index" : "products",
            "_type" : "_doc",
            "_id" : "200041",
            "_score" : null,
            "_source" : {
              "price" : 9080,
              "name" : "IPhone Mate Book 13"
            },
            "sort" : [
              9080.0
            ]
          }
        ]
      }
    }
    

    4.分页查询:添加了from和size属性,其中from是指分页的起始索引,size是指分页容量

    GET /products/_doc/_search
    {
      "query":{
        "match":{
          "name":"Book"
        }
      },
      "_source":["name","price"],
      "sort":[
        {
          "price":{
            "order":"desc"
          }
        }  
      ],
      "from":1,
      "size":1
    }
    

    查询出的结果:

    {
      "took" : 1,
      "timed_out" : false,
      "_shards" : {
        "total" : 1,
        "successful" : 1,
        "skipped" : 0,
        "failed" : 0
      },
      "hits" : {
        "total" : {
          "value" : 3,
          "relation" : "eq"
        },
        "max_score" : null,
        "hits" : [
          {
            "_index" : "products",
            "_type" : "_doc",
            "_id" : "200040",
            "_score" : null,
            "_source" : {
              "price" : 9090,
              "name" : "HUAWEi Mate Book 13"
            },
            "sort" : [
              9090.0
            ]
          }
        ]
      }
    }
    

    5.布尔查询,多条件查询

    其中bool代表此查询为布尔查询,也就是多条件查询
    must(and),所有的条件都要符合,相当于where id=1 and name=xxx
    should(or),满足一个条件即可,相当于 where id=1 or name=xxx
    must_not(!=),所有条件必须满足不等于,相当于where id!=1 and name!=xxx

    must查询

    GET /products/_doc/_search
    {
      "query":{
        "bool":{
          "must":[
            {
              "match":{
                "name":"Book"
              }
            },{
              "match":{
                "shop_id":1
              }
            }  
          ]
        }
      }
    }
    

    查询出的结果:

    {
      "took" : 2,
      "timed_out" : false,
      "_shards" : {
        "total" : 1,
        "successful" : 1,
        "skipped" : 0,
        "failed" : 0
      },
      "hits" : {
        "total" : {
          "value" : 3,
          "relation" : "eq"
        },
        "max_score" : 14.91694,
        "hits" : [
          {
            "_index" : "products",
            "_type" : "_doc",
            "_id" : "200039",
            "_score" : 14.91694,
            "_source" : {
              "brand_id" : 1,
              "create_time" : "2021-05-21T00:00:00Z",
              "id" : 200039,
              "last_time" : "2021-05-21T00:00:00Z",
              "long_name" : "HUAWEi Mate Book 14 16G 512G  ",
              "name" : "HUAWEi Mate Book 14",
              "price" : 9090,
              "review_count" : 11111,
              "shop_id" : 1,
              "sold_count" : 12345,
              "status" : 1,
              "three_category_id" : 3
            }
          },
          {
            "_index" : "products",
            "_type" : "_doc",
            "_id" : "200040",
            "_score" : 14.91694,
            "_source" : {
              "brand_id" : 1,
              "create_time" : "2021-05-21T00:00:00Z",
              "id" : 200040,
              "last_time" : "2021-05-21T00:00:00Z",
              "long_name" : "HUAWEi Mate Book 13 16G 512G  ",
              "name" : "HUAWEi Mate Book 13",
              "price" : 9090,
              "review_count" : 11111,
              "shop_id" : 1,
              "sold_count" : 12345,
              "status" : 1,
              "three_category_id" : 3
            }
          },
          {
            "_index" : "products",
            "_type" : "_doc",
            "_id" : "200041",
            "_score" : 14.91694,
            "_source" : {
              "brand_id" : 1,
              "create_time" : "2021-05-21T00:00:00Z",
              "id" : 200041,
              "last_time" : "2021-05-21T00:00:00Z",
              "long_name" : "HUAWEi Mate Book 13 16G 512G  ",
              "name" : "IPhone Mate Book 13",
              "price" : 9080,
              "review_count" : 11111,
              "shop_id" : 1,
              "sold_count" : 12345,
              "status" : 1,
              "three_category_id" : 3
            }
          }
        ]
      }
    }
    

    should查询

    GET /products/_doc/_search
    {
      "query":{
        "bool":{
          "should":[
            {
              "match":{
                "name":"Book"
              }
            },{
              "match":{
                "shop_id":1
              }
            }  
          ]
        }
      }
    }
    

    查询出的结果:

    {
      "took" : 42,
      "timed_out" : false,
      "_shards" : {
        "total" : 1,
        "successful" : 1,
        "skipped" : 0,
        "failed" : 0
      },
      "hits" : {
        "total" : {
          "value" : 4,
          "relation" : "eq"
        },
        "max_score" : 1.744874,
        "hits" : [
          {
            "_index" : "products",
            "_type" : "_doc",
            "_id" : "200040",
            "_score" : 1.744874,
            "_source" : {
              "brand_id" : 1,
              "create_time" : "2021-05-21T00:00:00Z",
              "id" : 200040,
              "last_time" : "2021-05-21T00:00:00Z",
              "long_name" : "HUAWEi Mate Book 13 16G 512G  ",
              "name" : "HUAWEi Mate Book 13",
              "price" : 8888,
              "review_count" : 11111,
              "shop_id" : 1,
              "sold_count" : 12345,
              "status" : 1,
              "three_category_id" : 3
            }
          },
          {
            "_index" : "products",
            "_type" : "_doc",
            "_id" : "200041",
            "_score" : 1.744874,
            "_source" : {
              "brand_id" : 1,
              "create_time" : "2021-05-21T00:00:00Z",
              "id" : 200041,
              "last_time" : "2021-05-21T00:00:00Z",
              "long_name" : "HUAWEi Mate Book 13 16G 512G  ",
              "name" : "IPhone Mate Book 13",
              "price" : 5499,
              "review_count" : 11111,
              "shop_id" : 1,
              "sold_count" : 12345,
              "status" : 1,
              "three_category_id" : 3
            }
          },
          {
            "_index" : "products",
            "_type" : "_doc",
            "_id" : "200043",
            "_score" : 1.0,
            "_source" : {
              "brand_id" : 1,
              "create_time" : "2021-05-21T00:00:00Z",
              "id" : 200043,
              "last_time" : "2021-05-21T00:00:00Z",
              "long_name" : "MateBook 16G 512G  ",
              "name" : "MateBook X",
              "price" : 9090,
              "review_count" : 11111,
              "shop_id" : 1,
              "sold_count" : 12345,
              "status" : 1,
              "three_category_id" : 3
            }
          },
          {
            "_index" : "products",
            "_type" : "_doc",
            "_id" : "200042",
            "_score" : 1.0,
            "_source" : {
              "brand_id" : 1,
              "create_time" : "2021-05-21T00:00:00Z",
              "id" : 200042,
              "last_time" : "2021-05-21T00:00:00Z",
              "long_name" : "OPPO 40s  16G 512G  ",
              "name" : "OPPO 40s",
              "price" : 13880,
              "review_count" : 11111,
              "shop_id" : 1,
              "sold_count" : 12345,
              "status" : 1,
              "three_category_id" : 3
            }
          }
        ]
      }
    }
    

    must_not查询

    GET /products/_doc/_search
    {
      "query":{
        "bool":{
          "must_not":[
            {
              "match":{
                "name":"Book"
              }
            },{
              "match":{
                "shop_id":1
              }
            }  
          ]
        }
      }
    }
    
    

    查询出的结果:(因为没有相关数据,所以返回的是空)

    {
      "took" : 20,
      "timed_out" : false,
      "_shards" : {
        "total" : 1,
        "successful" : 1,
        "skipped" : 0,
        "failed" : 0
      },
      "hits" : {
        "total" : {
          "value" : 0,
          "relation" : "eq"
        },
        "max_score" : null,
        "hits" : [ ]
      }
    }
    

    6. 过滤查询:(查询name带有Book或者shop_id等于1,并筛选出1000<price<=6000的文档)

    #修改旧数据价格操作未展示
    GET /products/_doc/_search
    {
      "query":{
        "bool":{
          "should":[
            {
              "match":{
                "name":"Book"
              }
            },{
              "match":{
                "shop_id":1
              }
            }  
          ],
          "filter":{
            "range":{
              "price":{
                "gt":1000,
                "lte":6000
              }
            }
          }
        }
      }
    }
    

    查询出的结果:

    {
      "took" : 1,
      "timed_out" : false,
      "_shards" : {
        "total" : 1,
        "successful" : 1,
        "skipped" : 0,
        "failed" : 0
      },
      "hits" : {
        "total" : {
          "value" : 1,
          "relation" : "eq"
        },
        "max_score" : 0.744874,
        "hits" : [
          {
            "_index" : "products",
            "_type" : "_doc",
            "_id" : "200041",
            "_score" : 0.744874,
            "_source" : {
              "brand_id" : 1,
              "create_time" : "2021-05-21T00:00:00Z",
              "id" : 200040,
              "last_time" : "2021-05-21T00:00:00Z",
              "long_name" : "HUAWEi Mate Book 13 16G 512G  ",
              "name" : "HUAWEi Mate Book 13",
              "price" : 5499,
              "review_count" : 11111,
              "shop_id" : 1,
              "sold_count" : 12345,
              "status" : 1,
              "three_category_id" : 3
            }
          }
        ]
      }
    }
    

    7.精准查询

    1.term:通过倒排索引指定的词条进行精确的查找,配合keyword类型的字段,都不分词,直接匹配
    2.match:查询之前会通过分词器解析,解析后再进行查询

    #查询一
    GET /products/_doc/_search
    {
      "query":{
        "term":{
          "name":"Book"
        }
      }
    }
    
    #查询二
    GET /products/_doc/_search
    {
      "query":{
        "term":{
          "name":"Phone Mate Book 13"
        }
      }
    }
    
    #查询三
    GET /products/_doc/_search
    {
      "query":{
        "match":{
          "name":"Book"
        }
      }
    }
    

    查询出的结果:(查询一、二都为空,只有查询三结果如下)

    {
      "took" : 1,
      "timed_out" : false,
      "_shards" : {
        "total" : 1,
        "successful" : 1,
        "skipped" : 0,
        "failed" : 0
      },
      "hits" : {
        "total" : {
          "value" : 3,
          "relation" : "eq"
        },
        "max_score" : 13.655978,
        "hits" : [
          {
            "_index" : "products",
            "_type" : "_doc",
            "_id" : "200039",
            "_score" : 13.655978,
            "_source" : {
              "brand_id" : 1,
              "create_time" : "2021-05-21T00:00:00Z",
              "id" : 200039,
              "last_time" : "2021-05-21T00:00:00Z",
              "long_name" : "HUAWEi Mate Book 14 16G 512G  ",
              "name" : "HUAWEi Mate Book 14",
              "price" : 9090,
              "review_count" : 11111,
              "shop_id" : 1,
              "sold_count" : 12345,
              "status" : 1,
              "three_category_id" : 3
            }
          },
          {
            "_index" : "products",
            "_type" : "_doc",
            "_id" : "200041",
            "_score" : 13.655978,
            "_source" : {
              "brand_id" : 1,
              "create_time" : "2021-05-21T00:00:00Z",
              "id" : 200041,
              "last_time" : "2021-05-21T00:00:00Z",
              "long_name" : "HUAWEi Mate Book 13 16G 512G  ",
              "name" : "IPhone Mate Book 13",
              "price" : 9080,
              "review_count" : 11111,
              "shop_id" : 1,
              "sold_count" : 12345,
              "status" : 1,
              "three_category_id" : 3
            }
          },
          {
            "_index" : "products",
            "_type" : "_doc",
            "_id" : "200040",
            "_score" : 13.655978,
            "_source" : {
              "brand_id" : 1,
              "create_time" : "2021-05-21T00:00:00Z",
              "id" : 200040,
              "last_time" : "2021-05-21T00:00:00Z",
              "long_name" : "HUAWEi Mate Book 13 16G 512G  ",
              "name" : "HUAWEi Mate Book 13",
              "price" : 5499,
              "review_count" : 11111,
              "shop_id" : 1,
              "sold_count" : 12345,
              "status" : 1,
              "three_category_id" : 3
            }
          }
        ]
      }
    }
    

    通过GET /products可以查看到name字段的类型为text


    image.png

    原因:
    查询一:无法精准匹配到name=“Book”的字段
    查询二:由于字段被分词器解析了,词库中没有 “Phone Mate Book 13” ,所以也无法匹配
    两个类型:text(会被分词器解析)和keyword(不会被分词器解析)

    精准匹配数字

    GET /products/_doc/_search
    {
      "query":{
        "bool":{
          "should":[
            {
              "term":{
                "price":5499
              }
            },
            {
              "term":{
                "price":9080
              }
            }
          ]
        }
      }
    }
    

    查询出的结果:

    {
      "took" : 1,
      "timed_out" : false,
      "_shards" : {
        "total" : 1,
        "successful" : 1,
        "skipped" : 0,
        "failed" : 0
      },
      "hits" : {
        "total" : {
          "value" : 2,
          "relation" : "eq"
        },
        "max_score" : 1.0,
        "hits" : [
          {
            "_index" : "products",
            "_type" : "_doc",
            "_id" : "200041",
            "_score" : 1.0,
            "_source" : {
              "brand_id" : 1,
              "create_time" : "2021-05-21T00:00:00Z",
              "id" : 200041,
              "last_time" : "2021-05-21T00:00:00Z",
              "long_name" : "HUAWEi Mate Book 13 16G 512G  ",
              "name" : "IPhone Mate Book 13",
              "price" : 9080,
              "review_count" : 11111,
              "shop_id" : 1,
              "sold_count" : 12345,
              "status" : 1,
              "three_category_id" : 3
            }
          },
          {
            "_index" : "products",
            "_type" : "_doc",
            "_id" : "200040",
            "_score" : 1.0,
            "_source" : {
              "brand_id" : 1,
              "create_time" : "2021-05-21T00:00:00Z",
              "id" : 200040,
              "last_time" : "2021-05-21T00:00:00Z",
              "long_name" : "HUAWEi Mate Book 13 16G 512G  ",
              "name" : "HUAWEi Mate Book 13",
              "price" : 5499,
              "review_count" : 11111,
              "shop_id" : 1,
              "sold_count" : 12345,
              "status" : 1,
              "three_category_id" : 3
            }
          }
        ]
      }
    }
    

    8.高亮查询

    GET /products/_doc/_search
    {
      "query":{
        "match":{
          "name":"Book"
        }
      },
      "highlight":{
        "fields":{
          "name":{}
        }
      }
    }
    

    查询出的结果:(可以看到多了<em>标签)

    {
      "took" : 7,
      "timed_out" : false,
      "_shards" : {
        "total" : 1,
        "successful" : 1,
        "skipped" : 0,
        "failed" : 0
      },
      "hits" : {
        "total" : {
          "value" : 3,
          "relation" : "eq"
        },
        "max_score" : 13.655978,
        "hits" : [
          {
            "_index" : "products",
            "_type" : "_doc",
            "_id" : "200039",
            "_score" : 13.655978,
            "_source" : {
              "brand_id" : 1,
              "create_time" : "2021-05-21T00:00:00Z",
              "id" : 200039,
              "last_time" : "2021-05-21T00:00:00Z",
              "long_name" : "HUAWEi Mate Book 14 16G 512G  ",
              "name" : "HUAWEi Mate Book 14",
              "price" : 9090,
              "review_count" : 11111,
              "shop_id" : 1,
              "sold_count" : 12345,
              "status" : 1,
              "three_category_id" : 3
            },
            "highlight" : {
              "name" : [
                "HUAWEi Mate <em>Book</em> 14"
              ]
            }
          },
          {
            "_index" : "products",
            "_type" : "_doc",
            "_id" : "200041",
            "_score" : 13.655978,
            "_source" : {
              "brand_id" : 1,
              "create_time" : "2021-05-21T00:00:00Z",
              "id" : 200041,
              "last_time" : "2021-05-21T00:00:00Z",
              "long_name" : "HUAWEi Mate Book 13 16G 512G  ",
              "name" : "IPhone Mate Book 13",
              "price" : 9080,
              "review_count" : 11111,
              "shop_id" : 1,
              "sold_count" : 12345,
              "status" : 1,
              "three_category_id" : 3
            },
            "highlight" : {
              "name" : [
                "IPhone Mate <em>Book</em> 13"
              ]
            }
          },
          {
            "_index" : "products",
            "_type" : "_doc",
            "_id" : "200040",
            "_score" : 13.655978,
            "_source" : {
              "brand_id" : 1,
              "create_time" : "2021-05-21T00:00:00Z",
              "id" : 200040,
              "last_time" : "2021-05-21T00:00:00Z",
              "long_name" : "HUAWEi Mate Book 13 16G 512G  ",
              "name" : "HUAWEi Mate Book 13",
              "price" : 5499,
              "review_count" : 11111,
              "shop_id" : 1,
              "sold_count" : 12345,
              "status" : 1,
              "three_category_id" : 3
            },
            "highlight" : {
              "name" : [
                "HUAWEi Mate <em>Book</em> 13"
              ]
            }
          }
        ]
      }
    }
    

    相关文章

      网友评论

          本文标题:elasticsearch中的查询

          本文链接:https://www.haomeiwen.com/subject/xvbksltx.html