Elasticsearch笔记七之setting,mapping,分片查询方式
setting
通过setting可以更改es配置可以用来修改副本数和分片数。
1:查看,通过curl或浏览器可以看到副本分片信息
curl -XGET http://192.168.79.131:9200/shb01/_settings?pretty
http://192.168.79.131:9200/shb01/_settings?prett

2:修改
不存在索引shb03时可以指定副本和分片,如果shb03已经存在则只能修改副本
curl -XPUT http://192.168.79.131:9200/shb03-d'{"settings":{"number_of_shards":4,"number_of_replicas":2}}'

shb03已经存在不能修改分片
curl -XPUThttp://192.168.79.131:9200/shb03/_settings -d '{"index":{"number_of_replicas":2}}'
mapping
我们在es中添加索引数据时不需要指定数据类型,es中有自动影射机制,字符串映射为string,数字映射为long。通过mappings可以指定数据类型是否存储等属性。
1:查看mapping信息
curl -XGEThttp://192.168.79.131:9200/shb01/_mappings?pretty
http://192.168.79.131:9200/shb01/_mappings?pretty

2:修改,通过mappings还可以指定分词器
操作不存在的索引
curl -XPUT http://192.168.79.131:9200/shb02-d'{"mappings":{"emp":{"properties":{"name":{"type":"string","indexAnalyzer":"ik","searchAnalyzer": "ik"}}}}}'
操作已存在的索引
curl -XPOSThttp://192.168.79.131:9200/crxy/shb02/_mapping-d'{"properties":{"name":{"type":"string","indexAnalyzer":"ik","searchAnalyzer": "ik"}}}'
java操作settings和mappings
- /**
- * settings,mappings
- * @throws IOException
- *
- * org.elasticsearch.action.admin.indices.create.CreateIndexRequestBuilder;
- * org.elasticsearch.common.xcontent.XContentBuilder;
- * org.elasticsearch.common.xcontent.XContentFactory;
- */
- @Test
- public void testSettingsMappings() throws IOException
- {
- //1:settings
- HashMap<String, Object> settings_map = new HashMap<String, Object>(2);
- settings_map.put("number_of_shards", 3);
- settings_map.put("number_of_replicas", 1);
- //2:mappings
- XContentBuilder builder = XContentFactory.jsonBuilder()
- .startObject()
- .field("dynamic", "stu")
- .startObject("properties")
- .startObject("id")
- .field("type", "integer")
- .field("store", "yes")
- .endObject()
- .startObject("name")
- .field("type", "string")
- .field("store", "yes")
- .field("index", "analyzed")
- .field("analyzer", "id")
- .endObject()
- .endObject()
- .endObject();
- CreateIndexRequestBuilder prepareCreate = transportClient.admin().indices().prepareCreate("shb01");
- prepareCreate.setSettings(settings_map).addMapping("stu", builder).execute().actionGet();
- }
一般在工作中关闭自动映射防止垃圾数据进入索引库,提前定义好索引库的字段信息当有非法的数据进来时会报错。如果不知道字段信息则开启。
分片查询
Es会将数据均衡的存储在分片中,我们可以指定es去具体的分片或节点钟查询从而进一步的实现es极速查询。
1:randomizeacross shards
随机选择分片查询数据,es的默认方式
2:_local
优先在本地节点上的分片查询数据然后再去其他节点上的分片查询,本地节点没有IO问题但有可能造成负载不均问题。数据量是完整的。
3:_primary
只在主分片中查询不去副本查,一般数据完整。
4:_primary_first
优先在主分片中查,如果主分片挂了则去副本查,一般数据完整。
5:_only_node
只在指定id的节点中的分片中查询,数据可能不完整。
6:_prefer_node
优先在指定你给节点中查询,一般数据完整。
7:_shards
在指定分片中查询,数据可能不完整。
8:_only_nodes
可以自定义去指定的多个节点查询,es不提供此方式需要改源码。
注:es的数据存放在/usr/local/elasticsearch-1.4.4/data,如果要升级es可先备份此目录
- /**
- * 指定分片 查询
- */
- @Test
- public void testPreference()
- {
- SearchResponse searchResponse = transportClient.prepareSearch(index)
- .setTypes("add")
- //.setPreference("_local")
- //.setPreference("_primary")
- //.setPreference("_primary_first")
- //.setPreference("_only_node:ZYYWXGZCSkSL7QD0bDVxYA")
- //.setPreference("_prefer_node:ZYYWXGZCSkSL7QD0bDVxYA")
- .setPreference("_shards:0,1,2")
- .setQuery(QueryBuilders.matchAllQuery()).setExplain(true).get();
- SearchHits hits = searchResponse.getHits();
- System.out.println(hits.getTotalHits());
- SearchHit[] hits2 = hits.getHits();
- for(SearchHit h : hits2)
- {
- System.out.println(h.getSourceAsString());
- }
- }
Elasticsearch笔记七之setting,mapping,分片查询方式的更多相关文章
- elasticsearch的5种分片查询优先级
elasticsearch可以使用preference参数来指定分片查询的优先级,使用时就是在请求url上加上preference参数,如:http://ip:host/index/_search?p ...
- Linux学习笔记(七) 查询系统
1.查看命令 (1)man 可以使用 man 命令名称 命令查看某个命令的详细用法,其显示的内容如下: NAME:命令名称 SYNOPSIS:语法 DESCRIPTION:说明 OPTIONS:选项 ...
- Elasticsearch笔记九之优化
Elasticsearch笔记九之优化 ).get(); } curl命令可以在linux中建立一个定时任务每天执行一次,同样java代码也可以建立一个定时器来执行. 2:内存设置之前介绍过es集群有 ...
- Elasticsearch笔记五之java操作es
Java操作es集群步骤1:配置集群对象信息:2:创建客户端:3:查看集群信息 1:集群名称 默认集群名为elasticsearch,如果集群名称和指定的不一致则在使用节点资源时会报错. 2:嗅探功能 ...
- ElasticSearch评分分析 explian 解释和一些查询理解
ElasticSearch评分分析 explian 解释和一些查询理解 按照es-ik分析器安装了ik分词器.创建索引:PUT /index_ik_test.索引包含2个字段:content和nick ...
- ElasticSearch入门 第九篇:实现正则表达式查询的思路
这是ElasticSearch 2.4 版本系列的第九篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 E ...
- ElasticSearch 学习记录之父子结构的查询
父子结构 父亲type属性查询子type 的类型 父子结构的查询,可以通过父亲类型的字段,查询出子类型的索引信息 POST /product/_search { "query": ...
- Elasticsearch笔记八之脑裂
Elasticsearch笔记八之脑裂 概述: 一个正常es集群中只有一个主节点,主节点负责管理整个集群,集群的所有节点都会选择同一个节点作为主节点所以无论访问那个节点都可以查看集群的状态信息. 而脑 ...
- Elasticsearch笔记二之Curl工具基本操作
Elasticsearch笔记二之Curl工具基本操作 简介: Curl工具是一种可以在命令行访问url的工具,支持get和post请求方式.-X指定http请求的方法,-d指定要传输的数据. 创建索 ...
随机推荐
- svn中出现各种感叹号说明
黄色感叹号(有冲突): --这是有冲突了,冲突就是说你对某个文件进行了修改,别人也对这个文件进行了修改,别人抢在你提交之前先提交了,这时你再提交就会被提示发生冲突,而不允许你提交,防止你的提交覆盖了别 ...
- Hibernate与Mybatis的比较
Hibernate与Mybatis的比较: Hibernate: 标准的.重量级.全自动化的ORM框架 可以写sql(SQLQuery,sql )也可以不写sql(Query,hql) ORM映射主要 ...
- Java IO学习--(一)概述
在这一小节,我会试着给出Java IO(java.io)包下所有类的概述.更具体地说,我会根据类的用途对类进行分组.这个分组将会使你在未来的工作中,进行类的用途判定时,或者是为某个特定用途选择类时变得 ...
- JDK内置工具之一——JMap(java memory map)
1.介绍 打印出某个java进程(使用pid)内存内的,所有‘对象’的情况(如:产生那些对象,及其数量). 可以输出所有内存中对象的工具,甚至可以将VM 中的heap,以二进制输出成文本.使用方法 j ...
- Spring Cloud入门教程 - Zuul实现API网关和请求过滤
简介 Zuul是Spring Cloud提供的api网关和过滤组件,它提供如下功能: 认证 过滤 压力测试 Canary测试 动态路由 服务迁移 负载均衡 安全 静态请求处理 动态流量管理 在本教程中 ...
- 只需几分钟跟小猫学前端(内含视频教程):nodejs基础之用express、ejs、mongdb建设简单的网站
开门见山视频教程 https://v.qq.com/x/page/d0645s79xrq.html 前 言: 这是小猫的第二篇node教程,第一篇教程是一个简单的试水,小猫的node教程面向对象为没有 ...
- JavaScript中对象数组 根据某个属性值 然后push到新的数组
原文链接 https://segmentfault.com/q/1010000010075035 将下列对象数组中,工资大于1w的员工,增加到对象数组 WanSalary中 var BaiduUser ...
- Ocelot中文文档-授权
Ocelot支持基于声明的授权. 这意味着如果您有要授权的路由,您可以将以下内容添加到您的ReRoute配置中. "RouteClaimsRequirement": { " ...
- 关于react router 4 的小实践
详细代码栗子:https://github.com/wayaha/react-dom-CY clone然后 npm install npm start 分割线 1.这个项目使用create-react ...
- eclipse配置tomcat后启动报内存错误解决方法
一.双击tomcat服务,打开配置界面 二.打开launch configuration窗口,在Argument最后面加入:-Xms256m -Xmx512m -XX:PermSize=256M -X ...