之前做了一下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
分享到:
相关推荐
ik分词算权重例子
Spring Boot结合Jest实现对ElasticSearch的全文检索,分词检索,分页,搜索结果高亮关键词,多字段检索 PageController中的搜索方法里面是全套的,分词,分页,高亮等都包含,数据格式个es-head中创建索引的索引在...
elasticsearch-7.17.6及对应版本IK分词 适合人群:elasticsearch初学者 Elasticsearch 是位于 Elastic Stack 核心的分布式搜索和分析引擎。Logstash 和 Beats 有助于收集、聚合和丰富您的数据并将其存储在 Elastic...
elasticsearch-analysis-pinyin-7.4.0 es拼音分词器7.4.0
elasticsearch-analysis-ik 是一个常用的中文分词器,在 Elasticsearch 中广泛应用于中文文本的分析和搜索。下面是 elasticsearch-analysis-ik 分词器的几个主要特点: 中文分词:elasticsearch-analysis-ik 是基于...
Elasticsearch 7.6.2 已集成ik分词器 解压后运行bin目录下,elasticsearch.bat文件
lasticsearch整合分词、创建索引、搜索例子,elasticsearch版本为1.0,索引数据从数据表中动态读取生成,有关键字高亮效果,查询分页 1 在dababase目录中导致相关的数据库文件,修改DBCOperation java文件数据库连接...
elasticsearch 分词器总结
该插件是elasticsearch拼音分词插件,支持中文,拼音,首字母混合搜索。 在实际搜索需求中,常常需要对中文做拼音搜索,首字母搜索或者中文拼音首字母混合搜索。比如要对 "广发聚财信用" 这几个中文进行拼音搜索,...
可以为ES提供分词搜索操作,与各版本基本兼容,最好与5.6 版本使用
如果直接使用Elasticsearch的朋友在处理中文... 这是因为使用了Elasticsearch中默认的标准分词器,这个分词器在处理中文的时候会把中文单词切分成一个一个的汉字,因此引入es之中文的分词器插件es-ik就能解决这个问题。
基于HanLP自然语言处理包的elasticsearch分词器.zip 大学生课程设计 基于elasticsearch的课程设计 自己大二写的课程设计
easy-es使用 docker-compose 快速部署 elastic search,专注于文本分词搜索功能,并提供一个精简过的 API 接口足以应付大部分中小型使用场景。为什么需要?如果您也面临以下问题:业务数据库逻辑复杂,互相关联,不...
十分钟学会使用 Elasticsearch 优雅搭建自己的搜索系统。 什么是elasticsearch Elasticsearch 是一个开源的高度可扩展的全文搜索和分析引擎,拥有查询近实时的超强性能。 大名鼎鼎的Lucene 搜索引擎被广泛用于搜索...
下面介绍如何在Elasticsearch 5.6.4中配置和实现pinyin+iK分词。 然后在elasticsearch-5.6.4/plugins目录下新建一个文件夹pinyin,把elasticsearch-analysis-ik-5.6.4.zip解压后的文件拷贝到elasticsearch-5.6.4/...
如果直接使用Elasticsearch的朋友在处理中文... 这是因为使用了Elasticsearch中默认的标准分词器,这个分词器在处理中文的时候会把中文单词切分成一个一个的汉字,因此引入es之中文的分词器插件es-ik就能解决这个问题。
es提供的分词是英文分词,对于中文的分词就做的非常不好了,ik分词器是针对中文分词 来用于搜索和使用。
Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级...
在elasticsearch 中默认提供的分词器是对中文不友好的,所以我们需要额外的 进行安装一个中文的分词器
Elastic Search+ik分词器的扩展词库,可以用来扩展开发自定义词库内容。从而增加商品的搜索准确度。