专栏首页小闫笔记elasticsearch的一些小知识点

elasticsearch的一些小知识点

"

A little nonsense now and then is relished by the wisest people.

—— Roald Dahl

"

这个假期有多少人新添了一份职业「云监工」,又有多少人干起了小区保安的工作(统计着进出小区的车辆),还有一些人无聊到数火龙果的「黑芝麻」...... 实不相瞒,我也一样,只不过无聊之际,偶尔看看书。之前对于 elasticsearch 介绍过一些常用的 API,今天再做一些额外的补充。更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

「云监工」:网络流行词,来源于央视频直播武汉开建的防治传染病医院火神山医院的建设工地,网友们虽然不能到现场出把力,但也给自己加了一个身份:云监工,通过直播镜头去“监督”医院的建设进度。 小区保安工作:很多人在家无聊,自觉统计着出入小区人员车辆数量,以帮助监督是否有人在疫情期间四处乱逛。 数火龙果的籽:这个起源于网友晒出的图片,为一个火龙果所有的籽标上了序号。

1.短语搜索

之前向大家介绍了模糊搜索 match ,现在又有了很多复杂的需求:确切的匹配若干个单词(同一字段的值中包含多个词)或者短语。这就用到了一个新的方法 match_phrase,官方示例如下:

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

上述语句查询 about 字段中同时包含 rockclimbing(并且是相邻的)的员工记录。match_phrase 方法也可以用于匹配短语(phrases)

有一些新来的小伙伴,可能对于上面的表达不是十分清楚,下面详细介绍一下。GET 表示请求方式,/megacorp/employee/_search 表示访问路径 PATH,大括号中的内容即 DSL 语句。更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

1.1 API 访问方式

curl

elasticsearch 进行交互时,可以通过 crul 方式,与其他普通的 HTTP 请求相同:

curl -X<VERB> '<PROTOCOL>://<HOST>:<PORT>/<PATH>?<QUERY_STRING>' -d '<BODY>'

VERB 表示请求方式:GET, POST, PUT, HEAD, DELETE PROTOCOL 表示访问协议,如 HTTP / HTTPS (只有在 Elasticsearch 前面有 https 代理的时候可用) HOST 表示 Elasticsearch 集群中的任何一个节点的主机名,如果是在本地的节点,那么就叫 localhost PORT 表示 Elasticsearch HTTP 服务所在的端口,默认为 9200 PATH 表示 API 路径,也就是示例中的 /megacorp/employee/_search QUERY_STRING 表示一些可选的查询请求参数,例如 ?pretty 参数使得返回 JSON 数据更加美观易读。 BODY 一个 JSON 格式的请求主体(如果请求需要的话)

postman

大家经常使用到的工具,通过输入请求 url 以及根据需要填写 DSL 语句做为请求体,进行访问。

其他

任何其他发送 HTTP 请求的方式更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

2.搜索结果高亮

故名思义,我们可以将搜索到的文档中匹配到的关键词进行高亮显示。它最大的作用就是醒目,让你一眼发现这个文档被匹配的原因。语句也很简单,只需要在之前的查询语句上增加 highlight参数:

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

当我们运行这个语句时,会命中与之前相同的结果,但是在返回结果中会有一个新的部分叫做 highlight,这里包含了来自about字段中的文本,并且用 <em></em>来标识匹配到的单词。更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

{
   ...
   "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" ]
            },
            "highlight": {
               "about": [
                  "I love to go <em>rock</em> <em>climbing</em>" <1>
               ]
            }
         }
      ]
   }
}

<1> 原有文本中高亮的片段

本文分享自微信公众号 - 全栈技术精选(Pythonnote),作者:小闫同学啊

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-01-31

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 美多商城项目(一)

    1.在给用户授权的时候,用到了一个%,表示的是任何ip都可以连接这个数据库。换句话说,如果你换了电脑,你也是可以进行连接数据库继续开发的。

    小闫同学啊
  • Django项目第一天

    1.在给用户授权的时候,用到了一个%,表示的是任何ip都可以连接这个数据库。换句话说,如果你换了电脑,你也是可以进行连接数据库继续开发的。

    小闫同学啊
  • 机器学习算法之kd树

    Create something today even if it sucks.—— 作者不详

    小闫同学啊
  • 董明珠的焦虑

    “我能成为‘网红’有三个原因:格力做手机、拒绝资本运作伤害制造业和给格力员工造房子。”

    镁客网
  • linux学习第六十四篇:Shell脚本中的逻辑判断,文件目录属性判断, if特殊用法,case判断

    Shell脚本中的逻辑判断 格式1:if 条件 ; then 语句; fi 格式2:if 条件; then 语句; else 语句; fi 格式3:if …; ...

    用户1215343
  • 马哥linux | Linux系统性能和使用活动监控工具 sysstat

    Sysstat是一个非常方便的工具,它带有众多的系统资源监控工具,用于监控系统的性能和使用情况。我们在日常使用的工具中有相当一部分是来自sysstat工具包的。...

    小小科
  • Box-Shadow Loading,可以创造无限可能

    Box-Shadow 通常,我们都是用作弹框阴影、需要层次的的元素等。但是它有更强大的功能,"多层阴影",制作一些非常有趣的动画。

    Javanx
  • css3简易的天气图标动画特效

    这里绘制云,和《CSS3线性渐变、阴影、缩放实现动画下雨效果》一样的,都是用box-shadow阴影来制作的。

    Javanx
  • QQ空间神器的数字神奇滴代码

    想要输出神奇的数字,首先小编明说只有QQ空间可以用,这些表情都是没有的,需要自己手动敲代码。

    似水的流年
  • 学习kafka教程(二)

    Kafka Streams编写关键任务实时应用程序和微服务的最简单方法,是一个用于构建应用程序和微服务的客户端库,其中输入和输出数据存储在Kafka集群中。它结...

    用户3467126

扫码关注云+社区

领取腾讯云代金券