博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Es学习笔记
阅读量:5874 次
发布时间:2019-06-19

本文共 2361 字,大约阅读时间需要 7 分钟。

hot3.png

一、全文搜索(一种传统数据库很难实现的功能)

我们将会搜索所有喜欢“rock climbing”的员工:GET /megacorp/employee/_search{    "query" : {        "match" : {            "about" : "rock climbing"        }    }}

你可以看到我们使用了之前的match查询,从about字段中搜索"rock climbing",我们得到了两个匹配文档:

{   ...   "hits": {      "total":      2,      "max_score":  0.16273327,      "hits": [         {            ...            "_score":         0.16273327, <1>            "_source": {               "first_name":  "John",               "last_name":   "Smith",               "age":         25,               "about":       "I love to go rock climbing",               "interests": [ "sports", "music" ]            }         },         {            ...            "_score":         0.016878016, <2>            "_source": {               "first_name":  "Jane",               "last_name":   "Smith",               "age":         32,               "about":       "I like to collect rock albums",               "interests": [ "music" ]            }         }      ]   }}

默认情况下,Elasticsearch根据结果相关性评分来对结果集进行排序, 结果相关性评分就是文档与查询条件的匹配程度。

但是为什么Jane Smith也会出现在结果里呢?原因是“rock”在她的abuot字段中被提及了。因为只有“rock”被提及而“climbing”没有,所以她的_score要低于John。

二、短语搜索

全文搜索允许我们在字段中搜索单独的一个词,这挺好的,但是有时候你想要确切的匹配若干个单词或者短语(phrases)。例如我们想要查询同时包含"rock"和"climbing"(并且是相邻的)的员工记录。

GET /megacorp/employee/_search{    "query" : {        "match_phrase" : {            "about" : "rock climbing"        }    }}

毫无疑问,该查询返回John Smith的文档:

{   ...   "hits": {      "total":      1,      "max_score":  0.23013961,      "hits": [         {            ...            "_score":         0.23013961,            "_source": {               "first_name":  "John",               "last_name":   "Smith",               "age":         25,               "about":       "I love to go rock climbing",               "interests": [ "sports", "music" ]            }         }      ]   }}

 

三、查询高亮显示

Elasticsearch中高亮片段是非常容易的,让我们在之前的语句上增加highlight参数:

{  "query": {    "match_phrase": {      "company_name": "苗会"    }  },  "highlight": {    "fields": {      "company_name": {}    }  }}

当我们运行这个语句时,会命中与之前相同的结果,但是在返回结果中会有一个新的部分叫做highlight,并且用<em></em>来标识匹配到的单词。

{"_index": "miaotu_formal","_type": "company_info_and_type","_id": "234","_score": 3.3942661,"_source": {"company_name": "中苗会","short_name": "中苗会","type_name": "景观设计"},"highlight": {"company_name": ["中"]}}

 

转载于:https://my.oschina.net/u/2494581/blog/742403

你可能感兴趣的文章
Linux的链接文件-ln命令
查看>>
maven的tomcat插件如何进行debug调试
查看>>
table表头固定
查看>>
截取字符串中两个字符串中的字符串
查看>>
spring xml properties split with comma for list
查看>>
判断点是否在三角形内
查看>>
Android实战简易教程-第二十三枪(基于Baas的用户注冊验证username是否反复功能!)...
查看>>
在odl中怎样实现rpc
查看>>
leetcode 110 Balanced Binary Tree
查看>>
python活用isdigit方法显示系统进程
查看>>
项目开发总结
查看>>
知行合一
查看>>
jmeter插件之jsonpath提取响应结果和做断言
查看>>
apt-get 命令加 autoclean clean autoremove 区别
查看>>
Docs-->.NET-->API reference-->System.Web.UI.WebControls-->Repeater
查看>>
发布支持多线程的PowerShell模块 —— MultiThreadTaskRunner
查看>>
Ubuntu ctrl+alt会导致窗口还原的问题
查看>>
第四十期百度技术沙龙笔记整理
查看>>
推荐系统那点事 —— 基于Spark MLlib的特征选择
查看>>
linux 下RTL8723/RTL8188调试记录(命令行)【转】
查看>>