简单搜索入门

秦先生的客栈 秦先生的客栈     2022-10-15     300

关键词:

1、query string search
2、query DSL
3、query filter
4、full-text search
5、phrase search
6、highlight search
*****************************************************************************************
1、query string search
搜索全部商品:GET /index/type/_search
例如: GET /ecommerce/product/_search
took:耗费了几毫秒
timed_out:是否超时
_shards:数据拆成了5个分片,所以对于搜索请求,会打到所有的primary shard(或者是它的某个replica shard也可以)
hits.total:查询结果的数量,1个document
hits.max_score:score的含义就是document对于一个search的相关度匹配分数,越相关,就越匹配,分数也越高
"took": 2,
"timed_out": false,
"_shards": {
  "total": 5,
  "successful": 5,
  "failed": 0
},
"hits": {
  "total": 1,
  "max_score": 1,
  "hits": [
  {
    "_index": "ecommerce",
    "_type": "product",
    "_id": "2",
    "_score": 1,
    "_source": {
      "name": "jiajieshi yagao",
      "desc": "youxiao fangzhu",
      "price": 25,
      "producer": "jiajieshi producer",
      "tags": [
        "fangzhu"
      ]
    }
  }]
}
}
query string search的由来,因为search参数都是以HTTP请求的query string来附带的
搜索商品名称中包含yagao的商品,而且按照价格降序排序:
GET /ecommerce/product/_search?q=name:yaogao&sort=price:desc
适用于临时的查询,比如curl,快速的发出请求,来检索想要的信息,但是复杂的请求很难构建。在生产环境中很少使用query string search

2、query DSL
DSL:Domain Specified language,特定领域的语言
http request body:请求体可以用json的格式来构建查询语法,比较方便,可以构建各种复杂的语法
查询所有的商品
GET /ecommerce/product/_search
{
  "query" : {"match_all" : {} }
}
查询名称包含牙膏的商品,同时按照价格降序排序
GET /ecommerce/product/_search
{
  "query" : {
    "match" : {
      "name" : "yagao"
    }
  },
  "sort" : [
    {"price" : "desc"}
  ]
}
分页查询商品,总共有3条商品,假设每页就显示1条商品,现在显示第2页,所以就查询出来第2个商品
GET /ecommerce/product/_search
{
  "query" : { "match_all" : {} },
  "from" : 1,
  "size" : 1
}
指定要查询出来的字段,其余字段不查询
GET /ecommerce/product/_search
{
  "query" : { "match_all" : {} },
  "_source" : ["name","price"]
}

3、query filter
搜索商品名称包含yagao,而且售价大于25的商品
GET /ecommerce/product/_search
{
  "query" : {
    "bool" : {
      "must" : {
        "match" : {
          "name" : "yagao"
        }
      },
      "filter" : {
        "range" : {
          "price" : { "gt" : 25 }
        }
      }
    }
  }
}

4、full-text search (全文检索)
GET /ecommerce/product/_search
{
  "query" : {
    "match" : {
      "producer" : "yagao producer"
    }
  }
}
producer这个字段会先被拆解,建立倒排索引
yagao producer ---> yagao和producer

5、phrase search (短语搜索)
跟全文检索相反,全文检索会将输入的搜索串拆解,去倒排索引里面一一匹配,只要能匹配上任意一个拆解后的单词,就可以作为结果返回;phrase seach要求输入的搜索串,必须在指定的字段文本中完全包含,才可以匹配,并作为结果返回
GET /ecommerce/product/_search
{
  "query" : {
    "match_phrase" : {
      "producer" : "yaogao producer"
    }
  }
}

6、highlight search (高亮搜索结果)
GET /ecommerce/product/_search
{
  "query" : {
    "match" : {
      "producer" : "producer"
    }
  },
  "highlight" : {
    "fields" : {
      "producer" : {}
    }
  }
}

算法入门深度优先搜索(简单-第二题)leetcode617(代码片段)

...f01;🌞《光天化日学C语言》🌞LeetCode太难?上简单题!🧡《C语言入门100例》🧡LeetCode太简单?大神盘他!🌌《 查看详情

算法入门广度优先搜索(简单-第一题)leetcode542(代码片段)

...f01;🌞《光天化日学C语言》🌞LeetCode太难?上简单题!🧡《C语言入门100例》🧡LeetCode太简单?大神盘他!🌌《 查看详情

算法入门05深度优先搜索(简单-第一题)leetcode733(代码片段)

...f01;🌞《光天化日学C语言》🌞LeetCode太难?上简单题!🧡《C语言入门100例》🧡LeetCode太简单?大神盘他!🌌《 查看详情

⭐算法入门⭐《二叉树-二叉搜索树》简单06——leetcode700.二叉搜索树中的搜索(代码片段)

文章目录一、题目1、题目描述2、基础框架3、原题链接二、解题报告1、思路分析2、时间复杂度3、代码详解三、本题小知识四、加群须知一、题目1、题目描述  给定二叉搜索树(BST)的根节点和一个值。你需要在BST中... 查看详情

⭐算法入门⭐《二叉树-二叉搜索树》简单05——leetcode897.递增顺序搜索树(代码片段)

文章目录一、题目1、题目描述2、基础框架3、原题链接二、解题报告1、思路分析2、时间复杂度3、代码详解三、本题小知识四、加群须知一、题目1、题目描述  给你一棵二叉搜索树,请按中序遍历将其重新排列为一棵递增... 查看详情

⭐算法入门⭐《二叉树-二叉搜索树》简单02——leetcode98.验证二叉搜索树(代码片段)

文章目录一、题目1、题目描述2、基础框架3、原题链接二、解题报告1、思路分析2、时间复杂度3、代码详解三、本题小知识四、加群须知一、题目1、题目描述  实现一个函数,检查一棵二叉树是否为二叉搜索树。  样例... 查看详情

⭐算法入门⭐《二叉树-二叉搜索树》简单08——leetcode938.二叉搜索树的范围和(代码片段)

文章目录一、题目1、题目描述2、基础框架3、原题链接二、解题报告1、思路分析2、时间复杂度3、代码详解三、本题小知识四、加群须知一、题目1、题目描述  给定二叉搜索树的根结点root,返回值位于范围[low,high][low,high]... 查看详情

⭐算法入门⭐《二叉树-二叉搜索树》简单04——leetcode1008.前序遍历构造二叉搜索树(代码片段)

文章目录一、题目1、题目描述2、基础框架3、原题链接二、解题报告1、思路分析2、时间复杂度3、代码详解三、本题小知识四、加群须知一、题目1、题目描述  返回与给定前序遍历preorder相匹配的二叉搜索树(binarysearchtree... 查看详情

二分的几种简单应用——入门

...法就不用了吧(最难的还际应用啊感觉)……实现起来很简单,搜索区间不断减半……唔……嘛……简单甩个模板好了(●‘?‘●)下面开始学习二分的几种应用啦~~ 1.假定一个解并判断是否可行一般用于求解判断条件较为简... 查看详情

⭐算法入门⭐《二叉树-二叉搜索树》简单07——leetcode530.二叉搜索树的最小绝对差(代码片段)

文章目录一、题目1、题目描述2、基础框架3、原题链接二、解题报告1、思路分析2、时间复杂度3、代码详解三、本题小知识四、加群须知一、题目1、题目描述  给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意... 查看详情

⭐算法入门⭐《二叉树-二叉搜索树》简单03——leetcode108.将有序数组转换为二叉搜索树(代码片段)

文章目录一、题目1、题目描述2、基础框架3、原题链接二、解题报告1、思路分析2、时间复杂度3、代码详解三、本题小知识四、加群须知一、题目1、题目描述  给定一个有序整数数组,元素各不相同且按升序排列,编... 查看详情

⭐算法入门⭐《二叉树-二叉搜索树》简单09——leetcode285.二叉搜索树中的中序后继(代码片段)

文章目录一、题目1、题目描述2、基础框架3、原题链接二、解题报告1、思路分析2、时间复杂度3、代码详解三、本题小知识四、加群须知一、题目1、题目描述  给定一棵二叉搜索树和其中的一个节点ppp,找到该节点在树中... 查看详情

⭐算法入门⭐《二叉树-二叉搜索树》简单11——leetcode109.有序链表转换二叉搜索树(代码片段)

文章目录一、题目1、题目描述2、基础框架3、原题链接二、解题报告1、思路分析2、时间复杂度3、代码详解三、本题小知识四、加群须知一、题目1、题目描述  给定一个单链表,其中的元素按升序排序,将其转换为高... 查看详情

⭐算法入门⭐《二叉树-二叉搜索树》简单11——leetcode109.有序链表转换二叉搜索树(代码片段)

文章目录一、题目1、题目描述2、基础框架3、原题链接二、解题报告1、思路分析2、时间复杂度3、代码详解三、本题小知识四、加群须知一、题目1、题目描述  给定一个单链表,其中的元素按升序排序,将其转换为高... 查看详情

elasticsearch数据搜索篇·入门级干货===转

ES即简单又复杂,你可以快速的实现全文检索,又需要了解复杂的RESTAPI。本篇就通过一些简单的搜索命令,帮助你理解ES的相关应用。虽然不能让你理解ES的原理设计,但是可以帮助你理解ES,探寻更多的特性。其他相关的内容参... 查看详情

⭐算法入门⭐《二叉树-二叉搜索树》简单10——leetcode剑指offer54.二叉搜索树的第k大节点(代码片段)

文章目录一、题目1、题目描述2、基础框架3、原题链接二、解题报告1、思路分析2、时间复杂度3、代码详解三、本题小知识四、加群须知一、题目1、题目描述  给定一棵二叉搜索树,请找出其中第k大的节点。  样例输... 查看详情

⭐算法入门⭐《深度优先搜索》简单02——leetcode617.合并二叉树(代码片段)

文章目录一、题目1、题目描述2、基础框架3、原题链接二、解题报告1、思路分析2、时间复杂度3、代码详解三、本题小知识四、加群须知一、题目1、题目描述  给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时... 查看详情

⭐算法入门⭐《二叉树-二叉搜索树》简单01——leetcode653.两数之和iv-输入bst(代码片段)

文章目录一、题目1、题目描述2、基础框架3、原题链接二、解题报告1、思路分析2、时间复杂度3、代码详解三、本题小知识四、加群须知一、题目1、题目描述  给定一个二叉搜索树root和一个目标结果k,如果二叉搜索树中... 查看详情