zoukankan      html  css  js  c++  java
  • Elasticsearch的简单使用(二)

    1.索引的建立

      存储数据到 Elasticsearch 的行为叫做 索引 ,但在索引一个文档之前,需要确定将文档存储在哪里。

      一个 Elasticsearch 集群可以 包含多个 索引 ,相应的每个索引可以包含多个 类型 这些不同的类型存储着多个 文档 ,每个文档又有 多个 属性

    首先了解增删改查的基本头部:

    1)GET:获取请求对象的当前状态。
    2)POST:改变对象的当前状态。
    3)PUT:创建一个对象。
    4)DELETE:销毁对象。
    5)HEAD:请求获取对象的基础信息

    PUT /megacorp/employee/1
    {
        "first_name" : "John",
        "last_name" :  "Smith",
        "age" :        25,
        "about" :      "I love to go rock climbing",
        "interests": [ "sports", "music" ]
    }

    注意,路径 /megacorp/employee/1 包含了三部分的信息:

    megacorp
    索引名称
    employee
    类型名称
    1
    特定雇员的ID 

    同样,再次增加文档依然可以沿用上面代码,分别可以为2,3.....

    2.检索文档

    GET /megacorp/employee/1

    结果便可以看到文档的相应属性和信息,这些属性是ES内部自行运行得到的。

      而将固定的文档1变为_search后,便可以查询索引里所有的文档内容。返回结果不仅告知匹配了哪些文档,还包含了整个文档本身:显示搜索结果给最终用户所需的全部信息。

    3.高级检索

    Elasticsearch 提供一个丰富灵活的查询语言叫做 查询表达式 它支持构建更加复杂和健壮的查询。领域特定语言 (DSL), 指定了使用一个 JSON 请求。

    GET /megacorp/employee/_search
    {
        "query" : {
            "match" : {
                "last_name" : "Smith"
            }
        }
    }

    检索到的时‘last_name’里含有Smith的文档内容。

    4.复杂的检索

    GET /megacorp/employee/_search
    {
        "query" : {
            "bool": {
                "must": {
                    "match" : {
                        "last_name" : "smith"  ①
                    }
                },
                "filter": {
                    "range" : {
                        "age" : { "gt" : 30 } ②
                    }
                }
            }
        }
    }

    这部分与我们之前使用的 match 查询 一样。

    这部分是一个 range 过滤器 它能找到年龄大于 30 的文档,其中 gt 表示_大于(_great than)。 

    5.全文搜索

    检索特定内容的文档

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

    这里的检索词包含rock和climbing,检索的过程是以单词为基本检索单位的,所以含有两个单词之一或全部含有的文档都会被检索出来。

      当然,如果你想只是检索含有全部内容的文档,那么在匹配的时候应该用match_phrase来检索。

    6.高亮搜索

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

    他会在检索后的文档中,标记你所需要查找的内容字符。

    "I love to go <em>rock</em> <em>climbing</em>"

           这是一个关于 Elasticsearch 基础描述的教程,且仅仅是浅尝辄止,更多诸如 suggestions、geolocation、percolation、fuzzy 与 partial matching 等特性均被省略,以便保持教程的简洁。但它确实突显了开始构建高级搜索功能多么容易。不需要配置——只需要添加数据并开始搜索!

    很可能语法会让你在某些地方有所困惑,并且对各个方面如何微调也有一些问题。没关系!本博客后续内容将针对每个问题详细解释,让你全方位地理解 Elasticsearch 的工作原理。

  • 相关阅读:
    Python 用 matplotlib 中的 plot 画图
    python--serial串口通信
    verilog,vhdl,bdf文件一起综合
    项目小笔记2--qt designer 修改字体,部件拖入layout,引用time模块延时,正则表达式判断输入,进制转换,部件固定大小,graphics view显示图片,消息提示框使用
    虚拟环境下通过pyinstaller 打包
    FPGA--IIC通信
    FPGA--SPI通信
    verilog 语法
    【C_Language】---队列和栈的C程序实现
    【C_Language】---C文件学习
  • 原文地址:https://www.cnblogs.com/qianshuixianyu/p/9279866.html
Copyright © 2011-2022 走看看