之前做了一下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 在中文环境下的得力助手,它结合了 IK 分词器的强大功能和 Elasticsearch 的灵活性,为企业级搜索提供了坚实的基石。通过合理的配置和使用,可以显著提高...
ik分词算权重例子
Elasticsearch(简称ES)是一款强大的开源搜索引擎,广泛应用于大数据领域的全文检索。它以其高可扩展性、实时性能以及丰富的分析能力著称。在中文环境下,由于汉字的复杂性,分词是实现有效搜索的关键步骤。为此,...
Elasticsearch(简称ES)是一款基于Lucene的分布式、RESTful搜索引擎,广泛应用于日志收集、数据分析等领域,是ELK(Elasticsearch、Logstash、Kibana)堆栈的重要组成部分。在处理中文数据时,合理的分词对于提升...
elasticsearch-analysis-ik 是一个常用的中文分词器,在 Elasticsearch 中广泛应用于中文文本的分析和搜索。下面是 elasticsearch-analysis-ik 分词器的几个主要特点: 中文分词:elasticsearch-analysis-ik 是基于...
通过以上步骤,你就成功地为Elasticsearch 7.17.10安装了IK分词器,从而提升了中文处理能力,为日志收集和分析提供更精准的索引和搜索功能。在实际应用中,可以根据需求调整分词器参数,优化分词效果。
Elasticsearch(ES)是一种流行的开源全文搜索引擎,它基于Lucene构建,提供了分布式、RESTful风格的搜索和分析引擎服务。在中文环境下,为了实现精确的分词和搜索,我们需要安装适合版本的分词插件,如“elastic...
在Elasticsearch中,分词器的作用至关重要,它负责将用户输入的文本进行词汇切分,以便进行后续的搜索和分析操作。IK分词器以其高效、灵活和全面的特性,被广泛应用于Elasticsearch的中文处理场景。 **版本信息** ...
总结来说,这个压缩包提供了一套完整的 Elasticsearch 环境,包括最新的 7.14.0 版本、必备的分词器支持以及方便的可视化工具 Head 插件,配合 PHP 客户端,可以快速搭建起一个功能完备的全文搜索引擎系统。...
Elasticsearch(ES)是流行的全文搜索引擎,它基于Lucene库构建,提供了一个分布式、RESTful风格的搜索和分析引擎服务。然而,对于中文这种复杂的语言,Elasticsearch默认的分词器无法很好地处理。这时,我们就需要...
总之,"elasticsearch-ik中文分词器7.6.2"是Elasticsearch处理中文数据的强大工具,通过灵活的配置和强大的分词能力,能够帮助用户构建高效、精准的中文搜索引擎。正确配置和使用IK分词器,对于提升Elasticsearch的...
Spring Boot结合Jest实现对ElasticSearch的全文检索,分词检索,分页,搜索结果高亮关键词,多字段检索 PageController中的搜索方法里面是全套的,分词,分页,高亮等都包含,数据格式个es-head中创建索引的索引在...
在Elasticsearch(ES)这个强大的全文搜索引擎中,拼音分词器扮演着至关重要的角色。拼音分词器允许我们对中文文本进行处理,将其转换为对应的拼音形式,从而实现基于拼音的搜索。这对于中文用户的搜索体验提升...
总的来说,这个"elasticsearch7.17.9版本分词器插件安装包"是针对中文环境的Elasticsearch实例增强搜索功能的重要工具,通过IK分词器提供高效的文本分析能力,适用于日志收集、分析等场景。正确安装和配置此插件,...
elasticsearch-7.17.6及对应版本IK分词 适合人群:elasticsearch初学者 Elasticsearch 是位于 Elastic Stack 核心的分布式搜索和分析引擎。Logstash 和 Beats 有助于收集、聚合和丰富您的数据并将其存储在 Elastic...
**Elasticsearch 7.6.1 - IK 分词器详解** Elasticsearch 是一个流行的、高度可扩展的全文搜索引擎,广泛应用于数据检索、分析和实时数据存储。在中文环境中,为了实现精确的中文分词,我们需要使用适合中文的分词...
"ES分词工具插件" 指的是 Elasticsearch (简称ES) 的一个特定插件,它的主要功能是实现对文本数据的分词处理,以便于进行更有效的全文检索和分析。 **描述解析:** 描述中提到"可以为ES提供分词搜索操作",这意味...
IK分词器(Intelligent Chinese Analyzer for Elasticsearch)是一款广泛应用于ES的中文分词插件,它能有效地对中文文本进行分词,提高中文搜索的准确性和效率。 **Elasticsearch分词器** 在Elasticsearch中,分词...
Elasticsearch(ES)是一款流行的开源全文搜索引擎,常用于日志收集、数据分析和实时搜索等场景。在处理中文文本时,分词器插件是必不可少的组件,它能够将中文字符串分解为有意义的词汇单元,以提升搜索的准确性和...
标题 "基于hanlp的elasticsearch分词插件" 指的是将自然语言处理库HanLP与搜索引擎Elasticsearch相结合,开发出一个用于Elasticsearch的分词插件。这样的插件可以提升Elasticsearch在中文文本处理上的性能,使其能够...