`

Elasticsearch 分词搜索

 
阅读更多
之前做了一下ES 的分词搜索,在网上找的资料很少,只能根据API一点点扒拉,总算长得帅还是有好处的,成功的通过分词进行搜索,适用的场景,根据某些字段进行分词匹配,并指定字段不同的优先级,都是通过http请求直接完成,自己实现是通过java封装了一下,java代码就不贴出来了,大家可以根据根据自己需要进行封装
分词查询大概需要两步操作:1.设置ES 某index下的mapping,2,针对字段进行query搜索

前提是先安装ES的分词插件,参考地址:http://ludizhang.iteye.com/blog/2323939

1.设置index mapping
向ES发送http PUT请求,
url:http://ip:port/indexName
postBody :
 {
    "mappings": {
        "testBase2": {
            "properties": {
                "field1": {
                    "type": "string",
                    "index": "analyzed",
                    "analyzer": "ik",
                    "search_analyzer": "ik",
                     "store":"yes"
                },
               "field1": {
                    "type": "string",
                    "index": "analyzed",
                    "analyzer": "ik",
                    "search_analyzer": "ik",-- 指定分词器
                    "store":"yes"
              } 
            }
        }
    }
}


怎么判断设置成功了呢,可以参考[img]



[/img]

在那黑框中有mapingg信息,不是setting里面的mapping哦,而是直接一个mapping节点,
同时图片中的页面是基于ES的_plugin/head/插件的

2.分词查询 向ES 发送 查询的POST请求

url:http://ip:port/indexName/typeName/_search
{
    "query": {
        "bool": {
            "must": [
                {
                    "query_string": {
                        "analyzer": "ik",-- 分析器,基于IK分词
                        "default_field": "field1",-- 查询字段
                        "query": "中国和美国",-- 匹配内容
                        "boost": 6 -- 查询权重
                    },
                    "query_string": {
                        "analyzer": "ik",
                        "default_field": "field2",
                        "query": "中国和美国",
                        "boost": 4
                    }
                }
            ]
        }
    },
"size": 10,-- 分页设置,每页条数
"from": 0-- 开始索引
}


查询结果
{
    "took": 7,
    "timed_out": false,
    "_shards": {
        "total": 5,
        "successful": 5,
        "failed": 0
    },
    "hits": {
        "total": 4,-- 总条数
        "max_score": 1,
        "hits": [
            {
                "_index": "index",
                "_type": "testBase2",
                "_id": "3187",
                "_score": 1,
                "_source": {
                    "brandName": "test5",
                    "classifyId": 23,
                    "labelWord": "标签3",
                    "videoName": "投放两段,9-12,14-16",
                    "brandId": 6,
                    "videoDesc": "视频简介5",
                    "videoId": 3187,
                    "classifyName": "生活aa",
                    "keyWord": "关键4"
                }
            },
            ....
        ]
    }
}

********************* 更新,用更加简单发方式进行复杂的查询
{
"fields": ["videoName","videoDesc"],//指定返回的字段
    "query": {
        "bool": {
            "must": [
                {
                    "query_string": {
                        "fields": ["videoName^9","videoDesc^1"],//查询字段+权重
                         "analyzer": "ik",
                        "query": "解决方式"
                    }
                }
            ]
        }
    },"from": 0, "size": 60
}


返回的结果和上一个查询方法返回的格式差不多,区别在于我们的这个查询是指定字段查询在
返回的数据部分
{
    "took": 38,
    "timed_out": false,
    "_shards": {
        "total": 5,
        "successful": 5,
        "failed": 0
    },
    "hits": {
        "total": 2444,
        "max_score": 1,
        "hits": [
            {
                "_index": "index",
                "_type": "testBase2",
                "_id": "1230",
                "_score": 1,
                "fields": {
                    "videoName": [
                        "一路向北"
                    ],
                    "videoDesc": [
                        "开辆奔驰,一路向北。在每条路上,玩的是乐趣,若能变换自如,我必飞奔到底。|奔驰"
                    ]
                }
            }
        ]
    }
}


区别在于 内部的hits 中的_source:字段,变成了fields字段,返回的数据格式由简单json数据 变为了 json 嵌套 jsonArray数据,解析起来比较麻烦一点,这个看个人爱好了
  • 大小: 64.6 KB
分享到:
评论

相关推荐

    elasticsearch-analysis-ik 7.10.0 分词器

    Elasticsearch-analysis-ik 7.10.0 分词器是 Elasticsearch 在中文环境下的得力助手,它结合了 IK 分词器的强大功能和 Elasticsearch 的灵活性,为企业级搜索提供了坚实的基石。通过合理的配置和使用,可以显著提高...

    分词算权重例子

    ik分词算权重例子

    elasticsearch-analysis-pinyin-7.4.0 es拼音分词器7.4.0

    Elasticsearch(简称ES)是一款强大的开源搜索引擎,广泛应用于大数据领域的全文检索。它以其高可扩展性、实时性能以及丰富的分析能力著称。在中文环境下,由于汉字的复杂性,分词是实现有效搜索的关键步骤。为此,...

    elasticsearch7.17.11版本分词器插件安装包

    Elasticsearch(简称ES)是一款基于Lucene的分布式、RESTful搜索引擎,广泛应用于日志收集、数据分析等领域,是ELK(Elasticsearch、Logstash、Kibana)堆栈的重要组成部分。在处理中文数据时,合理的分词对于提升...

    7.17.1系列Elasticsearch的elasticsearch-analysis-ik分词器

    elasticsearch-analysis-ik 是一个常用的中文分词器,在 Elasticsearch 中广泛应用于中文文本的分析和搜索。下面是 elasticsearch-analysis-ik 分词器的几个主要特点: 中文分词:elasticsearch-analysis-ik 是基于...

    elasticsearch7.17.10版本分词器插件安装包

    通过以上步骤,你就成功地为Elasticsearch 7.17.10安装了IK分词器,从而提升了中文处理能力,为日志收集和分析提供更精准的索引和搜索功能。在实际应用中,可以根据需求调整分词器参数,优化分词效果。

    IK分词器elasticsearch-analysis-ik-7.17.16

    在Elasticsearch中,分词器的作用至关重要,它负责将用户输入的文本进行词汇切分,以便进行后续的搜索和分析操作。IK分词器以其高效、灵活和全面的特性,被广泛应用于Elasticsearch的中文处理场景。 **版本信息** ...

    elasticSearch(ES)最新版 ik分词插件7.10 elasticsearch-analysis-ik-7.10.0

    Elasticsearch(ES)是一种流行的开源全文搜索引擎,它基于Lucene构建,提供了分布式、RESTful风格的搜索和分析引擎服务。在中文环境下,为了实现精确的分词和搜索,我们需要安装适合版本的分词插件,如“elastic...

    elasticsearch 中文分词器ik

    Elasticsearch(ES)是流行的全文搜索引擎,它基于Lucene库构建,提供了一个分布式、RESTful风格的搜索和分析引擎服务。然而,对于中文这种复杂的语言,Elasticsearch默认的分词器无法很好地处理。这时,我们就需要...

    spring boot + es结合Jest实现全站搜索,分页,分词搜索,搜索结果高亮,功能很全,博文里面有详细的介绍.zip

    Spring Boot结合Jest实现对ElasticSearch的全文检索,分词检索,分页,搜索结果高亮关键词,多字段检索 PageController中的搜索方法里面是全套的,分词,分页,高亮等都包含,数据格式个es-head中创建索引的索引在...

    elasticsearch7.17.9版本分词器插件安装包

    总的来说,这个"elasticsearch7.17.9版本分词器插件安装包"是针对中文环境的Elasticsearch实例增强搜索功能的重要工具,通过IK分词器提供高效的文本分析能力,适用于日志收集、分析等场景。正确安装和配置此插件,...

    elasticsearch-7.17.6及对应版本IK分词

    elasticsearch-7.17.6及对应版本IK分词 适合人群:elasticsearch初学者 Elasticsearch 是位于 Elastic Stack 核心的分布式搜索和分析引擎。Logstash 和 Beats 有助于收集、聚合和丰富您的数据并将其存储在 Elastic...

    elasticsearch-7.14.0+分词器+head插件一键下载

    总结来说,这个压缩包提供了一套完整的 Elasticsearch 环境,包括最新的 7.14.0 版本、必备的分词器支持以及方便的可视化工具 Head 插件,配合 PHP 客户端,可以快速搭建起一个功能完备的全文搜索引擎系统。...

    ES分词工具插件

    "ES分词工具插件" 指的是 Elasticsearch (简称ES) 的一个特定插件,它的主要功能是实现对文本数据的分词处理,以便于进行更有效的全文检索和分析。 **描述解析:** 描述中提到"可以为ES提供分词搜索操作",这意味...

    es7.0 ik的分词器

    IK分词器(Intelligent Chinese Analyzer for Elasticsearch)是一款广泛应用于ES的中文分词插件,它能有效地对中文文本进行分词,提高中文搜索的准确性和效率。 **Elasticsearch分词器** 在Elasticsearch中,分词...

    基于hanlp的elasticsearch分词插件

    标题 "基于hanlp的elasticsearch分词插件" 指的是将自然语言处理库HanLP与搜索引擎Elasticsearch相结合,开发出一个用于Elasticsearch的分词插件。这样的插件可以提升Elasticsearch在中文文本处理上的性能,使其能够...

    elasticsearch7.17.8版本分词器插件安装包

    Elasticsearch(ES)是一款流行的开源全文搜索引擎,常用于日志收集、数据分析和实时搜索等场景。在处理中文文本时,分词器插件是必不可少的组件,它能够将中文字符串分解为有意义的词汇单元,以提升搜索的准确性和...

    elasticsearch ik 分词

    在Elasticsearch中集成IK分词插件,可以显著提升对中文文本的索引和搜索性能。具体而言,IK分词插件包含两个主要模式:`smart`模式和`analyzed`模式。`smart`模式下,插件会尽可能地切分出标准词汇;`analyzed`模式...

    elasticsearch7.17.13版本分词器插件安装包

    Elasticsearch(ES)作为一款强大的开源搜索引擎,广泛应用于日志收集、数据分析等领域。为了提升中文文本处理的能力,安装合适的分词器插件是必不可少的步骤。本文将详细解析如何在Elasticsearch 7.17.13版本上安装...

    es安装ik分词器

    Elasticsearch 是一款基于 Lucene 的搜索引擎,广泛应用于日志处理、全文检索等场景。它提供了多种内置分词器来处理文本数据,但在实际应用过程中,由于中文语言的复杂性,Elasticsearch 默认提供的分词器往往不能很...

Global site tag (gtag.js) - Google Analytics