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

[java] view plain copy
  1. /**
  2. * settings,mappings
  3. * @throws IOException
  4. *
  5. * org.elasticsearch.action.admin.indices.create.CreateIndexRequestBuilder;
  6. * org.elasticsearch.common.xcontent.XContentBuilder;
  7. * org.elasticsearch.common.xcontent.XContentFactory;
  8. */
  9. @Test
  10. public void testSettingsMappings() throws IOException
  11. {
  12. //1:settings
  13. HashMap<String, Object> settings_map = new HashMap<String, Object>(2);
  14. settings_map.put("number_of_shards", 3);
  15. settings_map.put("number_of_replicas", 1);
  16. //2:mappings
  17. XContentBuilder builder = XContentFactory.jsonBuilder()
  18. .startObject()
  19. .field("dynamic", "stu")
  20. .startObject("properties")
  21. .startObject("id")
  22. .field("type", "integer")
  23. .field("store", "yes")
  24. .endObject()
  25. .startObject("name")
  26. .field("type", "string")
  27. .field("store", "yes")
  28. .field("index", "analyzed")
  29. .field("analyzer", "id")
  30. .endObject()
  31. .endObject()
  32. .endObject();
  33. CreateIndexRequestBuilder prepareCreate = transportClient.admin().indices().prepareCreate("shb01");
  34. prepareCreate.setSettings(settings_map).addMapping("stu", builder).execute().actionGet();
  35. }

一般在工作中关闭自动映射防止垃圾数据进入索引库,提前定义好索引库的字段信息当有非法的数据进来时会报错。如果不知道字段信息则开启。

分片查询

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可先备份此目录

[java] view plain copy
  1. /**
  2. * 指定分片 查询
  3. */
  4. @Test
  5. public void testPreference()
  6. {
  7. SearchResponse searchResponse = transportClient.prepareSearch(index)
  8. .setTypes("add")
  9. //.setPreference("_local")
  10. //.setPreference("_primary")
  11. //.setPreference("_primary_first")
  12. //.setPreference("_only_node:ZYYWXGZCSkSL7QD0bDVxYA")
  13. //.setPreference("_prefer_node:ZYYWXGZCSkSL7QD0bDVxYA")
  14. .setPreference("_shards:0,1,2")
  15. .setQuery(QueryBuilders.matchAllQuery()).setExplain(true).get();
  16. SearchHits hits = searchResponse.getHits();
  17. System.out.println(hits.getTotalHits());
  18. SearchHit[] hits2 = hits.getHits();
  19. for(SearchHit h : hits2)
  20. {
  21. System.out.println(h.getSourceAsString());
  22. }
  23. }

最新文章

  1. 使用Hive或Impala执行SQL语句,对存储在Elasticsearch中的数据操作
  2. Effective C++ -----条款24:若所有参数皆需类型转换,请为此采用non-member函数
  3. BZOJ-1705 Longge的问题 一维GCD SUM 乱搞+质因数分解+...
  4. httpServer V1
  5. [转载]Asp.net MVC2 与 MVC3 路由调试好帮手RouteDebug 与 RouteDebugger
  6. JavaScript高级程序设计38.pdf
  7. Android五大布局重新回顾
  8. HashMap深度解析(二)
  9. python的hashlib模块
  10. 表达式树 Expression
  11. XML 特殊字符处理和 CDATA
  12. bootstrap 切换页签失效的解决方法
  13. centOs6.5配置jdk及其注意事项
  14. android打包引用第三方jar出现的错误
  15. Deep Learning--week1~week3
  16. Numpy 矩阵库(Matrix)
  17. Alibaba Cloud Toolkit for Eclipse &amp; ECS、EDAS 或容器服务 Kubernetes
  18. 20180821 Python学习笔记:如何获取当前程序路径
  19. 微信小程序开发——打开另一个小程序
  20. ANSYS渡槽槽身动水压力的施加(1)——矩形渡槽

热门文章

  1. 熊猫猪新系统测试之三:iOS 8.0.2
  2. java并发包分析之———volitale
  3. Unknown entity: org.jbpm.services.task.audit.TaskEventImpl
  4. Angular TypeScript开发环境集成jQuery扩展插件
  5. Python函数式实现单例特性
  6. I want to try to improve myself from today
  7. linux(centos 7)学习之 ~目录下的文件anaconda-ks.cfg
  8. java 用ant打包成jar文件
  9. 拿到月薪30K,必选一些Python好书!
  10. C++ 文件流的详解