zoukankan      html  css  js  c++  java
  • elasticsearch搜索类型简单介绍

    简单搜索

    GET请求很easy——你能轻松获取你想要的文档。让我们来进一步尝试一些东西。比方简单的搜索!

    我们尝试一个最简单的搜索所有员工的请求:

    GET /megacorp/employee/_search

    接下来。让我们搜索姓氏中包括“jake”的员工。

    要做到这一点,我们将在命令行中使用轻量级的搜索方法。

    这样的方法常被称作查询字符串(query string)搜索。由于我们像传递URL參数一样去传递查询语句:

    GET /megacorp/employee/_search?

    q=last_name:jake

    我们在请求中依然使用_searchkeyword,然后将查询语句传递给參数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

  • 相关阅读:
    团队编程项目作业2-爬虫豆瓣top250项目代码设计规范
    《团队-爬取豆瓣电影TOP250-设计文档》
    个人编程作业1-GIT应用
    团队-爬取豆瓣Top250-开发环境搭建过程
    课后作业-阅读任务-阅读提问-1
    20170914-构建之法:现代软件工程-阅读笔记
    结对-贪吃蛇开发环境搭建过程
    结对-贪吃蛇游戏设计文档
    结对-结对编程项目作业名称-需求分析
    团队编程项目自我介绍
  • 原文地址:https://www.cnblogs.com/jhcelue/p/7040315.html
Copyright © 2011-2022 走看看