`
weitao1026
  • 浏览: 1047643 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

elasticsearch的实现全文检索

 
阅读更多

elasticsearch一个准实时的搜索引擎,基于lucene构建,它的主要强项还是在全文检索方面。工作中还是使用到了这部分功能,这里做一个简单的总结,可以使初次使用的人很快的配置和使用。
一、全文检索的概念
首先介绍全文检索的概念,就是对一篇文章进行索引,可以根据关键字搜索,类似于MySQL里的like语句。
全文索引就是把内容根据词的意义进行分词,然后分别创建索引,例如”你们的激情是因为什么事情来的” 可能会被分词成:“你们“,”激情“,“什么事情“,”来“ 等token
这样当你搜索“你们” 或者 “激情” 都会把这句搜出来。

二、内置分词器
elasticsearch实现全文索引,首先要确定分词器,elasticsearch默认有很多分词器,你可以参考elasticsearch的官方文档。了解分词器主要是怎么实现的。
你可以使用
curl -XGET ‘http://192.168.1.101:9200/_analyze?analyzer=standard’ -d ‘你们有什么事情’
命令来了解各种分词器的分词效果。

三、中文分词器
一般中文分词器一般使用第三方的ik分词器、mmsegf分词器和paoding分词器,他们最初可能构建于lucene,后来移植于elasticsearch。 在最新版的elasticsearch,我们主要使用了ik分词器。

安装ik分词器到elasticsearch很简单,它有个插件目录analysis-ik,和一个配置目录ik, 分别拷贝到plugins和conf目录就可以了。当然你可以使用elasticsearch的plugin命令去安装,这个过程可能会有些麻烦。

然后在elasticsearch.yml文件中配置

index:
  analysis:
    analyzer:
      ik:
          alias: [ik_analyzer]
          type: org.elasticsearch.index.analysis.IkAnalyzerProvider
      ik_max_word:
          type: ik
          use_smart: false
      ik_smart:
          type: ik
          use_smart: true

意思就是ik分词器,也可以使用别名ik_analyzer,使用IkAnalyzerProvider类分词。
ik_max_word、ik_smart也是ik分词器,只不过一个打开了use_smart开关,一个没打开use_smart。这个本文不关心。

四、curl命令测试分词器
第三方的分词器,你是没法使用
curl -XGET ‘http://192.168.1.101:9200/_analyze?analyzer=standard’ -d ‘你们有什么事情’ 来查看分词效果的。
你必须创建一个指定该分词器的索引才行。
1、创建索引
curl -XPUT http://192.168.1.101:9200/index
2、创建mapping,这里就一个字段content

curl -XPOST http://192.168.1.101:9200/index/fulltext/_mapping -d'
{
    "fulltext": {
             "_all": {
            "indexAnalyzer": "ik",
            "searchAnalyzer": "ik",
            "store": "false"
        },
        "properties": {
            "content": {
                "type": "string",
                "store": "no",
                "indexAnalyzer": "ik",
                "searchAnalyzer": "ik"
            }
        }
    }
}'

3、查看分词效果
curl -XGET ‘http://192.168.1.101:9200/index/_analyze?analyzer=ik’ -d ‘你们有什么事情’
4、索引数据
curl -XPOST http://192.168.1.101:9200/index/fulltext/1 -d'{content:”美国留给伊拉克的是个烂摊子吗”}’

curl -XPOST http://192.168.1.101:9200/index/fulltext/2 -d'{content:”公安部:各地校车将享最高路权”}’

curl -XPOST http://192.168.1.101:9200/index/fulltext/3 -d'{content:”中韩渔警冲突调查:韩警平均每天扣1艘中国渔船”}’

curl -XPOST http://192.168.1.101:9200/index/fulltext/4 -d'{content:”中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首”}’

5、全文检索

term检索,如果content分词后含有中国这个token,就会检索到

curl -XPOST http://192.168.1.101:9200/index/fulltext/_search  -d'
{"query" : { "term" : { "content" : "中国" }}}'

querystring检索,它会先把”中国美国“分词成中国、美国分别去检索,然后最后默认是OR的关系

curl -XPOST http://192.168.22.161:9200/index/fulltext/_search  -d'
{
    "query" : {
          "query_string" : {
               "default_field" : "content",
               "query" : "中国美国"
          }
       }
}'

你也可以明显的写成
“query” : “中国 AND 美国”
或者
“query” : “中国 OR 美国”
如果你把查询条件加上双引号
“query” : “\”中国美国\””
便类似mysql里的like的效果

五、Java客户端
java程序都有对应的类和方法。创建索引和设置mapping,这里就不赘述了,这里有总结:
主要是检索:
term搜索主要是用:QueryBuilders.termQuery(“content”, “中国”);
querystring搜索使用:

QueryStringQueryBuilder queryString = new QueryStringQueryBuilder(“中国 OR 美国”);
queryString.field(“content”);

分享到:
评论

相关推荐

    全文检索使用ElasticSearch实现全文检索的详细说明和实践探索

    ### 使用ElasticSearch实现全文检索的关键技术点及实践探索 #### 一、ElasticSearch简介与应用场景 ElasticSearch是一款基于Lucene的分布式搜索引擎,它提供了高性能、高扩展性及实时性的全文检索功能。在软件系统...

    使用ES全文检索.docx

    - **定制化查询**:利用Elasticsearch提供的RESTful API或者Spring Data Elasticsearch提供的API来实现更复杂的查询逻辑,如全文检索。 - **分词器配置**:通过`analysis-ik`插件集成IK分词器,支持中文分词,提高...

    springboot+es实现对word,pdf,txt等文件的非结构化数据全文内容检索

    本教程将详细介绍如何利用Spring Boot集成Elasticsearch 7.9.1及Kibana来实现对这些文件的全文内容检索。 首先,我们需要理解Elasticsearch的核心概念。Elasticsearch是一个开源的分布式搜索引擎,以它的高可扩展性...

    Elasticsearch全文检索

    在` ESDemo `项目中,你可以找到上述操作的具体实现代码,这将帮助你更深入地理解如何在Spring Boot应用中整合和使用Elasticsearch进行全文检索。通过学习和实践,你将能够熟练地运用Elasticsearch来解决大数据的...

    基于ElasticSearch全文检索的农业地理信息大数据平台设计与实现.zip

    本项目以"基于ElasticSearch全文检索的农业地理信息大数据平台设计与实现"为主题,旨在利用先进的大数据技术和全文检索引擎,为农业生产提供高效、精准的信息服务。 Elasticsearch是一款开源的搜索引擎,基于Lucene...

    springboot集成ES实现磁盘文件全文检索的示例代码

    Springboot集成ES实现磁盘文件全文检索的示例代码 本资源主要介绍了使用Springboot集成Elasticsearch(ES)实现磁盘文件全文检索的示例代码。该示例代码详细介绍了如何使用ES实现文档的索引和搜索,并提供了完整的...

    elasticsearch高亮全文检索demo

    通过以上步骤,你可以在 Elasticsearch 6.x 中实现一个高亮全文检索的功能。这个 Demo 是了解和学习 Elasticsearch 搜索和分析能力的一个良好起点。继续探索和实践,你会发现更多 Elasticsearch 强大的特性和用法,...

    人工智能-项目实践-检索引擎-基于Java8的SSM+Elasticsearch全文检索的个人博客系统

    检索引擎-基于Java8的SSM+Elasticsearch全文检索的个人博客系统”的项目中,开发者构建了一个集成了人工智能技术的个人博客系统,它利用了现代搜索引擎技术,特别是Elasticsearch,来实现高效的全文检索功能。...

    十分钟学会使用 Elasticsearch 优雅搭建自己的搜索系统.pdf

    而 Elasticsearch将 Lucene 作为其核心来实现所有索引和搜索的功能,通过简单的 RESTful 语法来隐藏掉 Lucene 的复杂性,从而让全文搜索变得简单 ES在Lucene基础上,提供了一些分布式的实现:集群,分片,复制等。 ...

    基于Java8的SSM+Elasticsearch全文检索的个人博客系统.zip

    Elasticsearch是一款高性能的开源搜索引擎,特别适合进行全文检索。它基于Lucene库,但提供了更高级别的API和集群管理功能。在博客系统中,Elasticsearch可以存储和索引博客文章内容,以便快速地进行关键词搜索。 ...

    java连接elasticsearch将搜索结果高亮显示并分页。

    java连接elasticsearch实现全文检索,并且高亮显示结果,实现分页。项目基于elasticsearch5.6.1可根据自己实际情况调整版本。最近项目需要所以学习了一下,项目很简单可以根据你的实际情况更改接口。我本地的搜索是...

    Elasticsearch实现检索词自动补全(检索词补全,自动纠错,拼音补全,繁简转换) 包含demo

    Elasticsearch 是一个高性能的全文搜索引擎,广泛应用于数据检索、日志分析等领域。在实际应用中,用户输入的检索词往往可能存在拼写错误、不完整或者使用了同义词等情况,为了提高用户体验和搜索准确性,Elastic...

    springboot-elasticsearch代码实现

    接下来,**Elasticsearch**是一个分布式、RESTful风格的搜索和数据分析引擎,适用于全文检索、结构化检索、分析等多种场景。Elasticsearch的核心概念包括索引(Index)、类型(Type)、文档(Document)和节点(Node...

    人工智能-项目实践-信息检索-基于腾讯云的网盘系统,支持目录树,全文检索,在线预览

    基于ElasticSearch实现全文检索功能 整体架构 如图所示,所有的数据最终都会落到腾讯云的对象存储中,本地文件服务器会保存文件到用户的映射,分布式搜索服务会通过云存储下载文件,建立索引,文件预览模块也会从云...

    基于ElasticSearch全文检索的农业地理信息大数据平台设计与实现.pdf

    针对现有农业大数据平台存在的问题,如地理要素纳入不足、研究尺度受限以及搜索功能薄弱等,本文提出了一种基于ElasticSearch全文检索技术的农业地理信息大数据平台的设计与实现方案。 首先,目前农业大数据平台...

    elasticsearch5控制全文检索结果的精确度

    ### Elasticsearch 5 控制全文检索结果的精确度 在Elasticsearch中,为了提升全文检索的质量,用户常常需要对检索结果的精确度进行控制。本文将详细介绍如何通过不同的查询方式来实现这一目标。 #### 一、增加标题...

    es客户端工具,便捷操作es全文检索工具的增删改查

    Elasticsearch(简称ES)是一种强大的开源搜索引擎,广泛应用于大数据分析和全文检索领域。作为Big Data解决方案的一部分,它以其高效、灵活和可扩展性而闻名。本文将深入探讨如何使用客户端工具来便捷地进行ES的增...

    ElasticSearch6.6全文检索.pdf

    - **电子商务搜索**:对于电商网站而言,ElasticSearch能够提供高性能的全文搜索功能,帮助用户快速找到所需商品。 ### 结论 ElasticSearch凭借其出色的分布式特性、接近实时的搜索能力、简便的数据持久化方式以及...

    Lucene实现全文检索

    **标题:“Lucene实现全文检索”** 在信息技术领域,全文检索是一种从大量文本数据中查找相关信息的关键技术。Apache Lucene是Java开发的一款开源全文搜索引擎库,它为开发者提供了构建高效、可扩展的搜索功能的...

    Elasticsearch in Action 全文检索

    **Elasticsearch in Action 全文检索** Elasticsearch 是一个强大的开源全文搜索引擎,由Java编写,基于Apache Lucene库。它设计用于分布式、实时、容错,旨在提供快速、可扩展的数据搜索和分析能力。在《Elastic...

Global site tag (gtag.js) - Google Analytics