美文网首页
全文搜索引擎Elasticsearch

全文搜索引擎Elasticsearch

作者: xcardata | 来源:发表于2018-03-30 15:55 被阅读0次
    全文搜索属于最常见的需求,开源的ES是目前全文搜索引擎的首选,它可以快速地储存、搜索和分析海量数据。基本的介绍以及安装教程网上有很多,在此略过这部分内容。
    

    一. 基本概念
    Elastic 本质上是一个分布式数据库。将其结构与mysql结构对比图及借介绍如下:

    QQ截图20180330155044.png
    (1)关系型数据库中的数据库(DataBase),等价于ES中的索引(Index)
    (2)一个数据库下面有N张表(Table),等价于1个索引Index下面有N多类型(Type),
    (3)一个数据库表(Table)下的数据由多行(ROW)多列(column,属性)组成,等价于1个Type由多个文档(Document)和多Field组成。
    (4)在一个关系型数据库里面,schema定义了表、每个表的字段,还有表和字段之间的关系。 与之对应的,在ES中:Mapping定义索引下的Type的字段处理规则,即索引如何建立、索引类型、是否保存原始索引JSON文档、是否压缩原始JSON文档、是否需要分词处理、如何进行分词处理等。
    (5)在数据库中的增insert、删delete、改update、查search操作等价于ES中的增PUT/POST、删Delete、改_update、查GET.
    ES允许多台服务器协同工作,每台服务器可以运行多个 Elastic 实例。
    单个 Elastic 实例称为一个节点(node)。一组节点构成一个集群(cluster)。
    注:再编写语句时可以使用postman软件更加方便。
    QQ图片20180330155404.png
    简单的从一个示例来分析ES的结构:
    $ curl -X PUT 'localhost:9200/accounts' -d '
    {
    "mappings": {
    "person": {
    "properties": {
    "user": {
    "type": "text",
    "analyzer": "ik_max_word",
    "search_analyzer": "ik_max_word"
    },
    "title": {
    "type": "text",
    "analyzer": "ik_max_word",
    "search_analyzer": "ik_max_word"
    },
    "desc": {
    "type": "text",
    "analyzer": "ik_max_word",
    "search_analyzer": "ik_max_word"
    }
    }
    }
    }
    }'
    上面代码中,首先新建一个名称为accounts的 Index,里面有一个名称为person的 Type。person有三个字段: user 、title 、 desc这三个字段都是中文,而且类型都是文本(text),所以需要指定中文分词器,不能使用默认的英文分词器。analyzer是字段文本的分词器,search_analyzer是搜索词的分词器。

    相关文章

      网友评论

          本文标题:全文搜索引擎Elasticsearch

          本文链接:https://www.haomeiwen.com/subject/akcicftx.html