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. }

Elasticsearch笔记七之setting,mapping,分片查询方式的更多相关文章

  1. elasticsearch的5种分片查询优先级

    elasticsearch可以使用preference参数来指定分片查询的优先级,使用时就是在请求url上加上preference参数,如:http://ip:host/index/_search?p ...

  2. Linux学习笔记(七) 查询系统

    1.查看命令 (1)man 可以使用 man 命令名称 命令查看某个命令的详细用法,其显示的内容如下: NAME:命令名称 SYNOPSIS:语法 DESCRIPTION:说明 OPTIONS:选项 ...

  3. Elasticsearch笔记九之优化

    Elasticsearch笔记九之优化 ).get(); } curl命令可以在linux中建立一个定时任务每天执行一次,同样java代码也可以建立一个定时器来执行. 2:内存设置之前介绍过es集群有 ...

  4. Elasticsearch笔记五之java操作es

    Java操作es集群步骤1:配置集群对象信息:2:创建客户端:3:查看集群信息 1:集群名称 默认集群名为elasticsearch,如果集群名称和指定的不一致则在使用节点资源时会报错. 2:嗅探功能 ...

  5. ElasticSearch评分分析 explian 解释和一些查询理解

    ElasticSearch评分分析 explian 解释和一些查询理解 按照es-ik分析器安装了ik分词器.创建索引:PUT /index_ik_test.索引包含2个字段:content和nick ...

  6. ElasticSearch入门 第九篇:实现正则表达式查询的思路

    这是ElasticSearch 2.4 版本系列的第九篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 E ...

  7. ElasticSearch 学习记录之父子结构的查询

    父子结构 父亲type属性查询子type 的类型 父子结构的查询,可以通过父亲类型的字段,查询出子类型的索引信息 POST /product/_search { "query": ...

  8. Elasticsearch笔记八之脑裂

    Elasticsearch笔记八之脑裂 概述: 一个正常es集群中只有一个主节点,主节点负责管理整个集群,集群的所有节点都会选择同一个节点作为主节点所以无论访问那个节点都可以查看集群的状态信息. 而脑 ...

  9. Elasticsearch笔记二之Curl工具基本操作

    Elasticsearch笔记二之Curl工具基本操作 简介: Curl工具是一种可以在命令行访问url的工具,支持get和post请求方式.-X指定http请求的方法,-d指定要传输的数据. 创建索 ...

随机推荐

  1. 杭电ACM 1004题

    原题大概意思就是统计输入字符串中,重复的最大个数! import java.util.Scanner; public class Main { public static void main(Stri ...

  2. G1 GC技术解析

    介绍 G1 GC,全称Garbage-First Garbage Collector,通过-XX:+UseG1GC参数来启用.G1收集器是工作在堆内不同分区上的收集器,分区既可以是年轻代也可以是老年代 ...

  3. oracle索引建立和删除

    1.多列建立索引 SQL> create index dex_index2 on dex(sex,name); Index created. SQL> select object_name ...

  4. python---内置模块

    时间模块 时间分为三种类型:时间戳,结构化时间,格式化时间 #时间模块,time import time #时间戳 x = time.time() time.gmtime() #将时间戳转换成UTC时 ...

  5. Android Studio 插件开发详解二:工具类

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78112856 本文出自[赵彦军的博客] 在插件开发过程中,我们按照开发一个正式的项 ...

  6. windows系统下输入法图标显示设置

    原先任务栏有两个搜狗输入法的标志,还有一个"中/英"的图标:甚至桌面还悬浮这一个搜狗输入法图标. 打开vscode等工具时,桌面悬浮的图标有时可能会遮挡到一些信息,十分不爽. 如今 ...

  7. 小白突破百度翻译反爬机制,33行Python代码实现汉译英小工具!

    表弟17岁就没读书了,在我家呆了差不多一年吧. 呆的前几个月,每天上网打游戏,我又不好怎么在言语上管教他,就琢磨着看他要不要跟我学习Python编程.他开始问我Python编程什么?我打开了我给学生上 ...

  8. 初入thinkphp

    花3天时间入门了php和thinkphp框架,紧接着就做了一个小后台,简单使用了thinkphp框架封装的一些类和函数. 现在来总结一下:             //登陆函数 public func ...

  9. python!!!!惊了,这世上居然还有这么神奇的东西存在

    第一次接触到python的时候实在看学习3Blue1Brown的视频线性代数的本质的时候.惊奇的是里面的视频操作,例如向量的变化,线性变换等都是由python用代码打出来的.那时的我只是以为pytho ...

  10. 洛谷 P1613 解题报告

    P1613 跑路 题目描述 小\(A\)的工作不仅繁琐,更有苛刻的规定,要求小\(A\)每天早上在\(6:00\)之前到达公司,否则这个月工资清零.可是小\(A\)偏偏又有赖床的坏毛病.于是为了保住自 ...