简单搜索入门

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" : {}
    }
  }
}

原文地址:https://www.cnblogs.com/qinjf/p/8445642.html

时间: 2024-11-07 20:42:26

简单搜索入门的相关文章

和我一起打造个简单搜索之SpringDataElasticSearch入门

网上大多通过 java 操作 es 使用的都是 TransportClient,而介绍使用 SpringDataElasticSearch 的文章相对比较少,笔者也是摸索了许久,接下来本文介绍 SpringDataElasticSearch 的 api 使用,更加方便的进行查询. 系列文章 一.和我一起打造个简单搜索之ElasticSearch集群搭建 二.和我一起打造个简单搜索之ElasticSearch入门 三.和我一起打造个简单搜索之IK分词以及拼音分词 四.和我一起打造个简单搜索之Log

git简单使用入门总结

之前老早就听说过git,但是一直就没怎么去了解,之前在公司里头都是用的svn版本控制工具,然后上个月换到了新公司之后,团队里使用的是git工具,然后就专门花了点时间去了解了一番,当然期间也确实碰到了不少问题,从入职到到今天应该有快一个半月了,然后下面就是我将这一个半月以来针对git的理解使用后整理出来的一个简单入门总结. 一.安装git 我的电脑是win7系统,然后从git官网下载msysgit安装包(http://msysgit.github.io/),安装流程和一般的windows软件的安装

kuangbin带你飞专题一 简单搜索 题解

目录 [kuangbin带你飞]专题一 简单搜索 [kuangbin带你飞]专题一 简单搜索 总结:用时2天半终于把这个专题刷完了 对于最基础的dfs bfs 路径打印 状态转移也有了一点自己些微的理解 其实2天半可以压缩到1天半的 主要是自己太懒了...慢慢加油刷bin神的专题呀 从大二下学期开始学算法 一开始就知道这个专题 一开始对于这个专题里的所有问题感觉都好难啊..就直接放弃了 看lrj的书 现在看到这个专题还挺唏嘘的吧 突然觉得思维和想法也不是很难 果然是那个时候心不静&还是储量不够吗

和我一起打造个简单搜索之Logstash实时同步建立索引

用过 Solr 的朋友都知道,Solr 可以直接在配置文件中配置数据库连接从而完成索引的同步创建,但是 ElasticSearch 本身并不具备这样的功能,那如何建立索引呢?方法其实很多,可以使用 Java API 的方式建立索引,也可以通过 Logstash 的插件 logstash-input-jdbc 完成,今天来探讨下如何使用 logstash-input-jdbc 完成全量同步以及增量同步. 环境 本文以及后续 es 系列文章都基于 5.5.3 这个版本的 elasticsearch

和我一起打造个简单搜索之ElasticSearch集群搭建

我们所常见的电商搜索如京东,搜索页面都会提供各种各样的筛选条件,比如品牌.尺寸.适用季节.价格区间等,同时提供排序,比如价格排序,信誉排序,销量排序等,方便了用户去找到自己心里理想的商品. 站内搜索对于一个网站几乎是标配,只是搜索的强大与否的区别,有的网站只支持关键词模糊搜索,而淘宝,京东提供了精细的筛选条件,同时支持拼音搜索等更方便的搜索方式. 由于笔者在一家做网络文学的公司工作,所以实现就是以小说为商品的搜索,具体可以参考起点网小说的搜索. 如图所示,起点网的搜索提供了关键词搜索和排序条件以

和我一起打造个简单搜索之SpringDataElasticSearch关键词高亮

前面几篇文章详细讲解了 ElasticSearch 的搭建以及使用 SpringDataElasticSearch 来完成搜索查询,但是搜索一般都会有搜索关键字高亮的功能,今天我们把它给加上. 系列文章 一.和我一起打造个简单搜索之ElasticSearch集群搭建 二.和我一起打造个简单搜索之ElasticSearch入门 三.和我一起打造个简单搜索之IK分词以及拼音分词 四.和我一起打造个简单搜索之Logstash实时同步建立索引 五.和我一起打造个简单搜索之SpringDataElasti

和我一起打造个简单搜索之IK分词以及拼音分词

elasticsearch 官方默认的分词插件,对中文分词效果不理想,它是把中文词语分成了一个一个的汉字.所以我们引入 es 插件 es-ik.同时为了提升用户体验,引入 es-pinyin 插件.本文介绍这两个 es 插件的安装. 环境 本文以及后续 es 系列文章都基于 5.5.3 这个版本的 elasticsearch ,这个版本比较稳定,可以用于生产环境. ik 分词器 和 pinyin 分词器在 github 仓库可以找到,注意版本与 elasticsearch 的版本需要对应,本文使

专题一、简单搜索 - Virtual Judge

很久以前刷完了Virtual Judge上的简单搜索专题,现总结如下: POJ 1321 由于题目的数据范围比较小,可以直接dfs暴力.读入时记录每个空位的位置,保存在pX[]以及pY[]数组中.暴力的时候统计当前处理第几个空格以及当前处理到了第几行即可. #include <iostream> #include <memory.h> using namespace std; const int MAX = 128; long long ans; int N, K, nCnt; b

开源TinyXML 最简单的入门教程

TinyXML是目前非常流行的一款基于DOM模型的XML解析器,简单易用且小巧玲珑,非常适合存储简单数据,配置文件. 该项目属于开源项目,在sourceforge上边的链接是:http://sourceforge.net/projects/tinyxml/ 当前最新版本是2.6.2 先看一下源码文档的结构: Docs是帮助文档,里边有非常多的使用说明,仅仅截一张图看一下: 具体根据需要再看 我们使用的是它的库,可以是静态的也可以是动态库,我就用静态库了,将这里边的几个头文件和源文件一起创建一个工