- 浏览: 150199 次
文章分类
最新评论
-
x_looking:
Client client = new TransportCl ...
ELASTICSEARCH常见问题 -
辣de冷wmyes:
ElasticSearch视频教程百度网盘地址:http:// ...
一、Elasticsearch安装使用教程
elasticsearch 的mapping
例子一:
订单号 如:ATTS000928732 类型不分词。 index: not_analyzed
订单号是全部数据 如: 63745345637 这样的分词是可以的。
例子二
定义mapping
在添加索引的mapping时就可以这样定义分词器
{
"page":{
"properties":{
"title":{
"type":"string",
"indexAnalyzer":"ik",
"searchAnalyzer":"ik"
},
"content":{
"type":"string",
"indexAnalyzer":"ik",
"searchAnalyzer":"ik"
}
}
}
}
indexAnalyzer为索引时使用的分词器,searchAnalyzer为搜索时使用的分词器。
java mapping代码如下:
XContentBuilder content = XContentFactory.jsonBuilder().startObject()
.startObject("page")
.startObject("properties")
.startObject("title")
.field("type", "string")
.field("indexAnalyzer", "ik")
.field("searchAnalyzer", "ik")
.endObject()
.startObject("code")
.field("type", "string")
.field("indexAnalyzer", "ik")
.field("searchAnalyzer", "ik")
.endObject()
.endObject()
.endObject()
.endObject()
测试分词可用调用下面api,注意indexname为索引名,随便指定一个索引就行了
http://localhost:9200/indexname/_analyze?analyzer=ik&text=测试elasticsearch分词器
elasticsearch中的mapping映射配置与查询典型案例
elasticsearch中的mapping映射配置示例
比如要搭建个中文新闻信息的搜索引擎,新闻有"标题"、"内容"、"作者"、"类型"、"发布时间"这五个字段;
我们要提供"标题和内容的检索"、"排序"、"高亮"、"统计"、"过滤"等一些基本功能。
ES提供了smartcn的中文分词插件,测试的话建议使用IK分词插件。
内容中properties对应mapping里的内容,里面5个字段。
type指出字段类型、内容、标题字段要进行分词和高亮因此要设置分词器和开启term_vector。
{
"news": {
"properties": {
"content": {#内容
"type": "string", #字段类型
"store": "no", #是否存储
"term_vector": "with_positions_offsets",#开启向量,用于高亮
"index_analyzer": "ik",#索引时分词器
"search_analyzer": "ik"#搜索时分词器
},
"title": {
"type": "string",
"store": "no",
"term_vector": "with_positions_offsets",
"index_analyzer": "ik",
"search_analyzer": "ik",
"boost": 5
},
"author": {
"type": "string",
"index": "not_analyzed"#该字段不分词
},
"publish_date": {
"type": "date",
"format": "yyyy/MM/dd",
"index": "not_analyzed"#该字段不分词
},
"category": {
"type": "string",
"index": "not_analyzed"#该字段不分词
}
}
}
}
查询示例:内容包括几个部分:
分页:from/size、字段:fields、排序sort、查询:query、过滤:filter、高亮:highlight、统计:facet
{
"from": 0,
"size": 10,
"fields": [
"title",
"content",
"publish_date",
"category",
"author"
],
"sort": [
{
"publish_date": {
"order": "asc"
}
},
"_score"
],
"query": {
"bool": {
"should": [
{
"term": {
"title": "中国"
}
},
{
"term": {
"content": "中国"
}
}
]
}
},
"filter": {
"range": {
"publish_date": {
"from": "2010/07/01",
"to": "2010/07/21",
"include_lower": true,
"include_upper": false
}
}
},
"highlight": {
"pre_tags": [
"<tag1>",
"<tag2>"
],
"post_tags": [
"</tag1>",
"</tag2>"
],
"fields": {
"title": {},
"content": {}
}
},
"facets": {
"cate": {
"terms": {
"field": "category"
}
}
}
}
结果包含需要的几个部分。
值得注意的是,facet的统计是命中的结果进行统计,filter是对结果进行过滤,filter不会影响facet,如果要统计filter掉的的就要使用filter facet。
例子一:
订单号 如:ATTS000928732 类型不分词。 index: not_analyzed
订单号是全部数据 如: 63745345637 这样的分词是可以的。
PUT /Order_v5 { "settings": { //设置10个分片,理解为类似数据库中的表分区中一个个分区的概念,不知道是否妥当 "number_of_shards": 10 }, "mappings": { "trades": { "_id": { "path": "id" }, "properties": { "id": { "type": "integer", //id:自增数字 //要求:查询 "store" : true }, "name": { //名称:佳洁士,强生婴儿沐浴露,100w Led节能灯,户外多功能折叠椅等 //要求:抓住关键字,如:佳洁士+牙膏 or 牙刷;<span></span> 强生+沐浴露; led+节能+100W; 户外+折叠椅等 //结论: 如果分词,就意味着产品品牌名词可能被拆分,如 "佳洁士", 如果不分词就意味着对用户输入要求匹配度高。先默认分词,试试看看。 "type": "string" }, "brand": { //品牌: PG,P&G,宝洁集团,宝洁股份,联想集团,联想电脑等 "type": "string" }, "orderNo": { //订单号 :如ATTS000928732 "type": "string", "index": "not_analyzed" }, "description": { //描述: 2015款玫瑰香型强生婴儿沐浴露,550ml,包邮 //搜索: 要求高亮所以设置store:true. 关键词权重:沐浴露 -> {强生+沐浴露 or 玫瑰花 + 沐浴露 or 550ml + 沐浴露 or 沐浴露 + 包邮-> {2015年 + 玫瑰香...}} //设置:必须分词,而且要控制好 "type": "string", <span></span> "sort": true }, "date": { "type": "date" }, "city": { "type": "string" }, "qty": { <span></span> // index无效 "type": "float" }, "price": { //价格: float index无效 "type": "float" } } } } }
例子二
定义mapping
在添加索引的mapping时就可以这样定义分词器
{
"page":{
"properties":{
"title":{
"type":"string",
"indexAnalyzer":"ik",
"searchAnalyzer":"ik"
},
"content":{
"type":"string",
"indexAnalyzer":"ik",
"searchAnalyzer":"ik"
}
}
}
}
indexAnalyzer为索引时使用的分词器,searchAnalyzer为搜索时使用的分词器。
java mapping代码如下:
XContentBuilder content = XContentFactory.jsonBuilder().startObject()
.startObject("page")
.startObject("properties")
.startObject("title")
.field("type", "string")
.field("indexAnalyzer", "ik")
.field("searchAnalyzer", "ik")
.endObject()
.startObject("code")
.field("type", "string")
.field("indexAnalyzer", "ik")
.field("searchAnalyzer", "ik")
.endObject()
.endObject()
.endObject()
.endObject()
测试分词可用调用下面api,注意indexname为索引名,随便指定一个索引就行了
http://localhost:9200/indexname/_analyze?analyzer=ik&text=测试elasticsearch分词器
elasticsearch中的mapping映射配置与查询典型案例
elasticsearch中的mapping映射配置示例
比如要搭建个中文新闻信息的搜索引擎,新闻有"标题"、"内容"、"作者"、"类型"、"发布时间"这五个字段;
我们要提供"标题和内容的检索"、"排序"、"高亮"、"统计"、"过滤"等一些基本功能。
ES提供了smartcn的中文分词插件,测试的话建议使用IK分词插件。
内容中properties对应mapping里的内容,里面5个字段。
type指出字段类型、内容、标题字段要进行分词和高亮因此要设置分词器和开启term_vector。
{
"news": {
"properties": {
"content": {#内容
"type": "string", #字段类型
"store": "no", #是否存储
"term_vector": "with_positions_offsets",#开启向量,用于高亮
"index_analyzer": "ik",#索引时分词器
"search_analyzer": "ik"#搜索时分词器
},
"title": {
"type": "string",
"store": "no",
"term_vector": "with_positions_offsets",
"index_analyzer": "ik",
"search_analyzer": "ik",
"boost": 5
},
"author": {
"type": "string",
"index": "not_analyzed"#该字段不分词
},
"publish_date": {
"type": "date",
"format": "yyyy/MM/dd",
"index": "not_analyzed"#该字段不分词
},
"category": {
"type": "string",
"index": "not_analyzed"#该字段不分词
}
}
}
}
查询示例:内容包括几个部分:
分页:from/size、字段:fields、排序sort、查询:query、过滤:filter、高亮:highlight、统计:facet
{
"from": 0,
"size": 10,
"fields": [
"title",
"content",
"publish_date",
"category",
"author"
],
"sort": [
{
"publish_date": {
"order": "asc"
}
},
"_score"
],
"query": {
"bool": {
"should": [
{
"term": {
"title": "中国"
}
},
{
"term": {
"content": "中国"
}
}
]
}
},
"filter": {
"range": {
"publish_date": {
"from": "2010/07/01",
"to": "2010/07/21",
"include_lower": true,
"include_upper": false
}
}
},
"highlight": {
"pre_tags": [
"<tag1>",
"<tag2>"
],
"post_tags": [
"</tag1>",
"</tag2>"
],
"fields": {
"title": {},
"content": {}
}
},
"facets": {
"cate": {
"terms": {
"field": "category"
}
}
}
}
结果包含需要的几个部分。
值得注意的是,facet的统计是命中的结果进行统计,filter是对结果进行过滤,filter不会影响facet,如果要统计filter掉的的就要使用filter facet。
发表评论
-
使用 Scripted Metric Aggregation 遇到的问题
2016-02-19 14:12 2482使用Scripted Metric Aggregation进行 ... -
ElasticSearch性能优化策略
2016-02-17 19:42 3562ElasticSearch性能优化主要分为4个方面的优化。 一 ... -
Elasticsearch 数据建模 - 处理关联关系
2016-02-17 14:40 1078数据建模(Modeling Your Data ... -
数据类型转换错误
2016-02-15 18:28 1635异常: Invalid shift value (64) in ... -
elasticsearch 排序异常,关键字冲突
2016-02-03 12:35 5922org.elasticsearch.action.search ... -
ElasticSearch不同类型下同名字段排序错误
2016-02-03 11:18 1955虽然之前知道elasticsearch不同类型下同名字段要慎用 ... -
ElasticSearch immense term错误
2016-02-02 19:07 2687在使用ElasticSearch的过程中遇到了一个immens ... -
ELASTICSEARCH常见问题
2015-09-22 15:39 32251. ELASTICSEARCH建索引过程中崩溃问题追查 by ... -
routing实例1
2015-09-21 18:51 0package com.eg.part1; import j ... -
routing实例
2015-09-21 18:49 0创建索引: PUT /useraudit_v1 创建索引别名: ... -
elasticsearch 精确,模糊查询实例
2015-09-19 23:55 62629实例 http://www.bubuko.com/infode ... -
elasticsearch java调用实例
2015-09-19 23:55 3576http://outofmemory.cn/code-snip ... -
[维护]Elasticsearch零停机时间更新索引配置或迁移索引
2015-09-18 10:16 800另外一篇文章:http://blog.csdn.net/dm_ ... -
ElasticSearch基础杂烩-配置-索引-优化
2015-09-19 23:56 650http://blog.csdn.net/huwei2003/ ... -
Elasticsearch安装中文分词插件ik
2015-09-18 10:15 2048安装步骤: 1、到github ... -
ElasticSearch的各种服务的URL
2015-09-18 10:15 547前言 elasticsearch 将各种功能、配置、服务都以A ... -
ElasticSearch集群搭建
2015-09-19 23:56 622http://www.linuxidc.com/Linux/2 ... -
elasticsearch 配置
2015-09-18 10:16 716elasticsearch.conf 主要是设置一些java运 ... -
elasticsearch中文分词集成
2015-09-17 09:35 615elasticsearch官方只提供smartcn这个中文分词 ... -
elasticsearch的Mapping定义
2015-09-17 09:35 1424Mapping,就是对索引库中 ...
相关推荐
这个基于Java注解的Elasticsearch mapping生成工具,旨在简化ES 5.2.0环境下的映射管理工作,通过注解方式提供强大的映射定义能力。它不仅提高了开发效率,还增强了代码的可读性和维护性。在实际项目中,这样的工具...
ElasticSearch映射生成器该工具允许在创建索引时为索引生成映射或设置。...使用注释描述定义的映射字段安装二进制文件部署在Maven Central上,您可以将工件导入到您的项目中: < dependency> < groupId>...
2. **创建索引**: 定义数据模型并创建对应的Elasticsearch索引。索引是Elasticsearch中的逻辑存储单元,类似于关系数据库中的表。 3. **序列化与反序列化**: 使用Nest库,对象会被自动转换为JSON格式,发送到...
7. **映射(Mapping)**:映射是Elasticsearch中的字段配置,定义了字段的数据类型、分析器等,影响着数据的索引和搜索行为。 8. **搜索性能**:Elasticsearch利用倒排索引技术,提供快速的全文检索。同时,通过...
每个索引都有一个唯一的名称,并且可以设置相关的映射(Mapping)来定义字段的数据类型。 3. **文档(Document)**:索引中的基本单位,通常表示一种实体的信息,以JSON格式存储。 4. **类型(Type)**:在Elastic...
最后,`es`包可能是Elasticsearch相关的操作接口或抽象类,它们定义了与Elasticsearch交互的方法,如添加、更新、删除文档,以及查询等。例如: ```java public interface ElasticsearchRepository { void save...
2. 数据索引:创建合适的索引模板,定义映射(Mapping)以指定字段类型和分析器。 3. 分词器优化:选择适合的分词器,并可能需要自定义分词规则以满足特定需求。 4. 性能调优:监控集群性能,调整索引刷新频率、副本...
- **类型(Type)**:在6.x版本后被文档映射(Mapping)取代,用于定义索引中每个字段的数据类型。 - **文档(Document)**:索引中的最小数据单元,以JSON格式存在。 - **分片(Shard)**:索引的逻辑部分,用于水平...
在Elasticsearch中,mapping是定义索引中字段的数据类型和属性的过程,它影响着数据如何被索引和搜索。通过自定义注解,开发者可以在实体类上直接声明字段的mapping,避免了手动编写JSON映射文件的繁琐工作。这使得...
4. **动态映射**: 当新类型的数据被索引时,Elasticsearch 可以自动创建映射(mapping),定义字段的数据类型,也可以手动配置。 5. **实时分析**: 数据一旦被索引,即可立即用于搜索和分析,无需等待批处理过程。 ...
6. **映射(Mapping)**:映射是Elasticsearch中定义字段数据类型的配置,它决定了数据如何被索引和搜索。5.6版本支持自动映射,但也可以自定义映射以满足特定需求。 7. **近实时处理(NRT)**:Elasticsearch具有...
- **映射(Mapping)**:定义字段的数据类型,有助于优化查询性能。 **2. Elasticsearch 的安装与配置** 安装 Elasticsearch 可通过下载官方二进制包,解压后配置 `elasticsearch.yml` 文件,包括设置路径、网络...
Elasticsearch是一个强大的开源搜索引擎,基于Java开发,其核心功能是全文检索,但同时也支持结构化数据、非结构化数据的检索。它以其高可扩展性、实时性、分布式处理能力以及灵活的数据模型赢得了广大用户的青睐。...
- **映射(Mapping)**:定义字段的数据类型和分析规则。 - **分片(Shard)**:索引被分成多个分片,可以分布在不同节点上,提高可伸缩性和性能。 - **副本(Replica)**:分片的备份,用于提高可用性和故障恢复。 2....
cp elasticsearch-analysis-ik-1.2.5.jar ES_HOME/plugins/analysis-ik/ ``` 同时,在 ElasticSearch 的配置文件 `elasticsearch.yml` 中添加以下内容来启用 ik 分词器: ```yaml index: analysis: analyzer: ik...
**Elasticsearch权威指南概述** Elasticsearch是一个开源的全文搜索引擎,基于Lucene构建,设计用于分布式、实时的搜索和分析引擎。它不仅提供搜索功能,还支持数据分析、日志收集等多种用途。这本书《Elastic...
Elasticsearch 7.0 实例精解源代码是一份深度解析Elasticsearch 7.0版本核心功能和实际应用的资源集合。这份压缩包包含了详细的示例代码,旨在帮助开发者更好地理解和掌握Elasticsearch的强大功能。以下是基于...
**Elasticsearch** 是一个流行的开源全文搜索引擎,广泛应用于大数据分析、日志分析、实时搜索等领域。本参考资料基于《Elasticsearch 权威指南》的中文版,由原作者Clinton Gormley和Zachary Tong编著,旨在帮助...
- 创建索引:`PUT /index_name`,定义映射(mapping)来规范字段类型。 - 插入文档:`POST /index_name/_doc`,JSON格式表示数据。 - 查询索引:`GET /index_name/_search`,使用JSON构造查询条件。 5. **搜索...