Elasticsearch教程,Elasticsearch Java API创建Mapping,指定分词器
2017-05-29 10:40
417 查看
先说
Elasticsearch 版本,我的
Elasticsearch 版本是
,所以参照的时候,请先核对版本,在版本相差大的情况下,先可以试试。
为什么要指定分词器,因为我们在搜索(
原文:Elasticsearch教程,Elasticsearch Java API创建Mapping,指定分词器
场景:
当我一个索引库是存储生鲜蔬菜的,那词库应该就是定制的生鲜蔬菜相关的。而另外一个是服装的,那么这2个索引库分词,搜索规则肯定大不相同。
之前发布过:Elasticsearch教程(五) elasticsearch Mapping的创建 ,可以看看。
然后一系列的入门教程:
Elasticsearch 目录
Elasticsearch教程(一),全程直播(小白级别)
Elasticsearch教程(二),IK分词器安装
Elasticsearch教程(三),IK分词器安装 (极速版)
Elasticsearch安装(四), elasticsearch head 插件安装和使用。
Elasticsearch教程(五) elasticsearch Mapping的创建
Elasticsearch教程(六) elasticsearch Client创建
Elasticsearch教程(七) elasticsearch Insert 插入数据(Java)
Elasticsearch教程(八) elasticsearch delete 删除数据(Java)
Elasticsearch教程(九) elasticsearch 查询数据 | 分页查询
好了废话不多说,下面开始走代码,本章节主要说Java API。
Elasticsearch 近义词搜索 的设置。
Elasticsearch 版本,我的
Elasticsearch 版本是
2.x,具体是
2.0.2
,所以参照的时候,请先核对版本,在版本相差大的情况下,先可以试试。
为什么要指定分词器,因为我们在搜索(
Search)的时候,创建索引(
Index)的时候,都有规则,如果我们这个规则不同,那么我们就可以指定了。
原文:Elasticsearch教程,Elasticsearch Java API创建Mapping,指定分词器
场景:
当我一个索引库是存储生鲜蔬菜的,那词库应该就是定制的生鲜蔬菜相关的。而另外一个是服装的,那么这2个索引库分词,搜索规则肯定大不相同。
之前发布过:Elasticsearch教程(五) elasticsearch Mapping的创建 ,可以看看。
然后一系列的入门教程:
Elasticsearch 目录
Elasticsearch教程(一),全程直播(小白级别)
Elasticsearch教程(二),IK分词器安装
Elasticsearch教程(三),IK分词器安装 (极速版)
Elasticsearch安装(四), elasticsearch head 插件安装和使用。
Elasticsearch教程(五) elasticsearch Mapping的创建
Elasticsearch教程(六) elasticsearch Client创建
Elasticsearch教程(七) elasticsearch Insert 插入数据(Java)
Elasticsearch教程(八) elasticsearch delete 删除数据(Java)
Elasticsearch教程(九) elasticsearch 查询数据 | 分页查询
好了废话不多说,下面开始走代码,本章节主要说Java API。
Java API 创建Mapping
public class SearchIndexMapping implements BaseMapping{ public static XContentBuilder getMapping(){ XContentBuilder mapping = null; try { mapping = jsonBuilder() .startObject() //关闭TTL .startObject("_ttl") .field("enabled",false) .endObject() .startObject("properties") .startObject("id").field("type","long").endObject() .startObject("title") .field("type","string") .field("store", "yes") //指定index analyzer 为 ik .field("analyzer", "ik") //指定search_analyzer 为ik_syno .field("searchAnalyzer", "ik_syno") .endObject() .startObject("description").field("type","string").field("index","not_analyzed").endObject() .startObject("url").field("type","string").field("index","not_analyzed").endObject() .startObject("type").field("type","integer").endObject() .endObject() .endObject(); } catch (IOException e) { e.printStackTrace(); } return mapping; } //创建Mapping public static void createMapping(){ //先创建索引 CreateIndexRequest request = new CreateIndexRequest(DB_INDEX); ESTools.client.admin().indices().create(request); //创建mapping PutMappingRequest mapping = Requests.putMappingRequest(DB_INDEX).type(SEARCH_INDEX).source(getMapping()); ESTools.client.admin().indices().putMapping(mapping).actionGet(); } }
主要说明部分
.startObject("title") .field("type","string") .field("store", "yes") //指定index analyzer 为 ik_syno .field("analyzer", "ik") //指定search_analyzer 为ik_syno .field("searchAnalyzer", "ik_syno") .endObject()
当你只设置search_analyzer的时候,要你先设置analyzer。
Request processing failed; nested exception is MapperParsingException[analyzer on field [title] must be set when search_analyzer is set]
当你的分词器不存在的时候,会如下错误:
Request processing failed; nested exception is MapperParsingException[analyzer [分词器名称] not found for field [被设置的字段]]OK了,指定分词器说完毕了,下面一篇会说
Elasticsearch 近义词搜索 的设置。
相关文章推荐
- Elasticsearch用java api 创建mapping
- elasticsearch 字段别名(创建索引并指定索引类型的mapping)
- Elasticsearch索引和mapping及logstash配置文件过滤(教程2)
- ElasticSearch创建索引(index)和添加映射(mapping)
- Elasticsearch通过JAVA创建索引、Mapping以及数据的增删该查操作
- ES 对各字段创建分词 和mapping创建 个人操作记录
- elasticsearch2.4.1 java api 创建连接
- elasticsearch2.2 使用mapping创建索引
- ElasticSearch 使用教程之Mapping(映射)介绍
- ElasticSearch封装(创建索引,删除索引,创建Mapping,批量插入,批量删除,搜索)
- elasticsearch java api 创建客户端连接(Transport Client)
- Elasticsearch2.x 拼音分词插件lc-pinyin安装教程
- elasticsearch java api 使用ik 分词器
- ElasticSearch Java Api -创建索引
- elasticsearch5.2.2使用java API创建transport client
- ElasticSearch java API--创建mapping
- java api访问elasticsearch下ik-pinyin分词基本使用
- ElasticSearch-PHP:自定义分词规则 Mappings的创建
- elasticsearch__1__java操作之连接es,创建Mapping,保存数据
- Elasticsearch创建索引,删除索引,添加mapping