elasticsearch搜索类型简单介绍
简单搜索
GET
请求很easy——你能轻松获取你想要的文档。让我们来进一步尝试一些东西。比方简单的搜索!
我们尝试一个最简单的搜索所有员工的请求:
GET /megacorp/employee/_search
接下来。让我们搜索姓氏中包括“jake”的员工。
要做到这一点,我们将在命令行中使用轻量级的搜索方法。
这样的方法常被称作查询字符串(query string)搜索。由于我们像传递URL參数一样去传递查询语句:
GET /megacorp/employee/_search?
q=last_name:jake
我们在请求中依然使用_search
keyword,然后将查询语句传递给參数q=
。这样就能够得到全部姓氏为jake的结果。
使用DSL语句查询
查询字符串搜索便于通过命令行完毕特定(ad hoc)的搜索,可是它也有局限性(參阅简单搜索章节)。Elasticsearch提供丰富且灵活的查询语言叫做DSL查询(Query DSL),它同意你构建更加复杂、强大的查询。
DSL(Domain Specific Language特定领域语言)以JSON请求体的形式出现。我们能够这样表示之前关于“jake”的查询:
GET /megacorp/employee/_search
{
"query" : {
"match" : {
"last_name" : "jake"
}
}
}
这会返回与之前查询同样的结果。
你能够看到有些东西改变了,我们不再使用查询字符串(query string)做为參数。而是使用请求体取代。这个请求体使用JSON表示。当中使用了match
语句(查询类型之中的一个。详细我们以后会学到)。
更复杂的搜索
我们让搜索略微再变的复杂一些。我们依然想要找到姓氏为“jake”的员工。可是我们仅仅想得到年龄大于30岁的员工。
我们的语句将加入过滤器(filter),它使得我们高效率的运行一个结构化搜索:
GET /megacorp/employee/_search
{
"query" : {
"filtered" : {
"filter" : {
"range" : {
"age" : { "gt" : 30 } <1>
}
},
"query" : {
"match" : {
"last_name" : "jake" <2>
}
}
}
}
}
- <1> 这部分查询属于区间过滤器(range filter),它用于查找全部年龄大于30岁的数据——
gt
为"greater than"的缩写。 - <2> 这部分查询与之前的
match
语句(query)一致。
短语搜索
眼下我们能够在字段中搜索单独的一个词,这挺好的,可是有时候你想要确切的匹配若干个单词或者短语(phrases)。比如我们想要查询同一时候包括"rock"和"climbing"(而且是相邻的)的员工记录。
要做到这个,我们仅仅要将match
查询变更为match_phrase
查询就可以:
GET /megacorp/employee/_search
{
"query" : {
"match_phrase" : {
"about" : "rock climbing"
}
}
}
高亮我们的搜索
非常多应用喜欢从每一个搜索结果中高亮(highlight)匹配到的keyword,这样用户能够知道为什么这些文档和查询相匹配。在Elasticsearch中高亮片段是非常easy的。
让我们在之前的语句上添加highlight
參数。
当我们执行这个语句时,会命中与之前同样的结果,可是在返回结果中会有一个新的部分叫做highlight
,这里包括了来自about
字段中的文本。而且用<em></em>
来标识匹配到的单词。
ps: web怎样做高亮显示,能够參考:http://www.w3school.com.cn/tags/tag_phrase_elements.asp
elasticsearch搜索类型简单介绍的更多相关文章
- Elasticsearch - 搜索类型与搜索位置
一.搜索类型: Elasticsearch同意用户选择其所希望的处理查询的方式. 由于存在一些不同的情形,对其使用不同的搜索类型才是合适的.为了控制查询的运行方式,我们能够在请求中使用search_t ...
- Elasticsearch搜索类型(query type)详解
关于我,邯郸人. 对这类话题感兴趣?欢迎发送邮件至donlianli@126.com 请支持原创http://www.cnblogs.com/donlianli/p/3857500.html e ...
- ElasticSearch文档-简单介绍
ElasticSearch是一个基于Lucene构建的开源,分布式,RESTful搜索引擎.设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便.支持通过HTTP使用JSON进行数据索引 ...
- 在linux上安装elasticsearch简称ES 简单介绍安装步骤
1.简介 Elasticsearch 是一个分布式可扩展的实时搜索和分析引擎,一个建立在全文搜索引擎 Apache Lucene(TM) 基础上的搜索引擎.当然 Elasticsearch 并不仅仅是 ...
- Python动态类型简单介绍
动态类型以及它提供的多态性,无疑是Python语言简洁性和灵活性的基础. 一.变量 <1>变量创建 一个变量a.当代码第一次给它赋值时就创建了它,之后的赋值将会改变已创建的变量名的值. ...
- python 基础-----数字,字符串,列表,字典类型简单介绍
一.第一个python小程序 1.下载安装python2.7和python3.6的版本及pycharm,我们可以再解释器中输入这样一行代码: 则相应的就打出了一句话.这里的print是打印的意思.你输 ...
- ElasticSearch搜索介绍四
ElasticSearch搜索 最基础的搜索: curl -XGET http://localhost:9200/_search 返回的结果为: { "took": 2, &quo ...
- C++map类型 之 简单介绍
一:map的前世今生 (1)从关联容器与顺序容器说起.关联容器通过键(key)存储和读取元素.而顺序容器则通过元素在容器中的位置顺序存储和訪问元素(vector,queue,stack,list等). ...
- Lucene.net站内搜索—4、搜索引擎第一版技术储备(简单介绍Log4Net、生产者消费者模式)
目录 Lucene.net站内搜索—1.SEO优化 Lucene.net站内搜索—2.Lucene.Net简介和分词Lucene.net站内搜索—3.最简单搜索引擎代码Lucene.net站内搜索—4 ...
随机推荐
- How Javascript works (Javascript工作原理) (三) 内存管理及如何处理 4 类常见的内存泄漏问题
个人总结: 1.两种垃圾回收机制: 1)引用标记算法:如果检测到一个对象没有被引用了,就清除它. ***这种算法不能处理循环引用的情况*** 2)标记—清除算法:从根(全局变量)开始向后代变量检测,任 ...
- iOS面试总结(待完善)
闲的没事总结一下面试资料,先列个大纲,然后慢慢填充,一步步完善,反正也不急. 1.基本属性 2.KVC与KVO 3.代理与block 4.多线程:NSThread,GCD,NSOperation 5. ...
- Microsoft Visual Studio 2015打开TFS大量报错问题解决方案
用vs2015打开项目出现如图错误,尝试对XX项执行 添加 操作时遇到 XX 个错误,因为公司项目比较大,这个错误一直在弹,搜索了下,没有找到出现类似问题的解决方案. 因为这个路径是TFS(Team ...
- POJ-1276 Cash Machine 多重背包 二进制优化
题目链接:https://cn.vjudge.net/problem/POJ-1276 题意 懒得写了自己去看好了,困了赶紧写完这个回宿舍睡觉,明早还要考试. 思路 多重背包的二进制优化. 思路是将n ...
- POJ 2228 Naptime(DP+环形处理)
题解 这题一眼望去DP. 发现自己太智障了. 这题想的是O(n^3m)的. 环形处理只会断环成链....然后DP也想的不好. 我们先考虑如果除去环这题该怎么做? dp[i][j][0/1]代表到第i小 ...
- redis 多实例监控
1.制作redis_low_discovery.sh脚本 mkdir -p /data/service/script/zabbix cd /data/service/script/zabbix cat ...
- 紫书 习题8-7 UVa 11925(构造法, 不需逆向)
这道题的意思紫书上是错误的-- 难怪一开始我非常奇怪为什么第二个样例输出的是2, 按照紫书上的意思应该是22 然后就不管了,先写, 然后就WA了. 然后看了https://blog.csdn.net/ ...
- OpenJDK源码研究笔记(五)-缓存Integer等类型的频繁使用的数据和对象,大幅度提升性能(一道经典的Java笔试题)
摘要 本文先给出一个看似很简单实则有深意的Java笔试面试题,引出JDK内部的缓存. JDK内部的缓存,主要是为了提高Java程序的性能. 你能答对这道"看似简单,实则有深意"的J ...
- OpenStack-API开发
介绍两种OpenStack-API(Java版)--jcoulds && openstack4j Jclouds 1.介绍 jclouds -该API提供云计算环境的可移植抽象层以及云 ...
- mysql-汇总(聚集)函数
我们需要汇总数据而不用把他们实际检索出来,他们主要用来进行分析和报表数据的生成. 1.AVG:通过对表中行数计数并计算特定列值之和,求得该列的平均值.可用来返回所有列的平均值,也可以用来返回特定列或行 ...