Elasticsearch搜索调优权威指南(1/3)

  
  

英文原文:https://qbox。io/博客/elasticsearch-search-tuning-5-0-ultimate-guide亚当Vanderbush

译者:杨振涛

     

<强>目录

  
      <李>文档建模李   <李>全局序列号和延迟李   <李>多代关系李   <李>为文件系统缓存分配内存李   
  

Elasticsearch搜索调优权威指南,是QBOX在其博客上发布的系列文章之一,本文是该系列的第一篇,主要从文档建模,内存分配,文件系统缓存,GC和硬件等方面介绍了优化查询性能的一些经验。

  

Elasticsearch 5.0.0确实是在2。x之后的一个大版本,为大家带来了许多新东西.Elasticsearch现在作为弹性堆栈中的一员,与整个技术栈的其他产品的版本号已经对齐,现在Kibana, Logstash,节拍和Elasticsearch全都是5.0版本了。

  

这个版本的Elasticsearch是目前为止最快,最安全,最弹性,也是最易用的,而且还带来了很多的改进和新特性。

  

我们已经通过“Elasticsearch性能调优权威指南”系列,介绍了一些性能调优的基本经验和方法,解释了每一步最关键的系统设置和衡量指标。该系列共分下列3个部分:

  
      <李>权威指南Elasticsearch性能调优(第1部分)   <李> Elasticsearch性能调优的权威指南(第2部分)   <李> Elasticsearch性能调优的权威指南(第3部分)   
  

索引决策也很重要,它对如何搜索数据有很大的影响。如果是一个字符串字段,是否需要分词或归一化?如果是,怎么做?如果是一个数值型属性,需要哪种精度?还有很多其他类型,比如日期时间,以地理空间形状及父子关系等,需要更多特别的考虑。

  

我们也通过一个系列教程讨论了“Elasticsearch索引性能优化”,介绍了一些通用的技巧和方法,来最大化索引的吞吐量并降低监控和管理的负载。该教程分如下3个部分:

  
      <李>如何最大化Elasticsearch索引性能(第1部分)   <李>如何最大化Elasticsearch索引性能(第2部分)   <李>如何最大化Elasticsearch索引性能(第3部分)   
  

本文旨在推荐一些搜索调优技术,策略以及Elasticsearch 5.0及以上的推荐特性。

  

 Elasticsearch搜索调优权威指南(1/3)

  

<强> 1。文档建模

  

内部对象属性数组并不像期望的那样工作Lucene。<强> 中没有内部对象的概念,所以Elasticsearch把对象层次展开到一个由属性名称和属性值组成的简单列表中。以下列文档为例:

  
 <代码类=" sql语言">旋度-XPUT ' localhost: 9200/my_index/my_type/1 ?application/json漂亮' - h - type:“- d”{
  “集团”:“粉丝”,
  “用户”:(
  {
  “第一”:“约翰”,
  “去年”:“史密斯”
  },
  {
  “第一”:“爱丽丝”,
  “去年”:“白色”
  }
  ]
  }'  
  

该请求会在内部转换为如下的文档形式:

  
 <代码类=" sql语言"> {
  “集团”:“粉丝”,
  “用户。第一”:“爱丽丝”,“约翰”,
  “用户。去年”:(“史密斯”,“白色”)
  } 
  

如果需要索引对象数组,并维护数组中每个对象的依赖关系,应当使用内嵌数据类型而不是对象数据类型。内嵌对象在内部会把数组中的每个对象当作单独的隐藏文档来索引,即使用下述内嵌查询,可以单独查询每个内嵌对象:

  
 <代码类=" sql语言">旋度-XPUT”ES_HOST: ES_PORT/my_index吗?application/json漂亮' - h - type:“- d”{
  “映射”:{
  " my_type ": {
  "属性":{
  "用户":{
  “类型”:“嵌套”
  }
  }
  }
  }
  } '
  
  旋度-XPUT ES_HOST: ES_PORT/my_index/my_type/1 ?application/json漂亮' - h - type:“- d”{
  “集团”:“粉丝”,
  “用户”:(
  {
  “第一”:“约翰”,
  “去年”:“史密斯”
  },
  {
  “第一”:“爱丽丝”,
  “去年”:“白色”
  }
  ]
  } '
  
  旋度xget ES_HOST: ES_PORT/my_index/_search吗?application/json漂亮' - h - type:“- d”{
  "查询":{
  “嵌套”:{
  “路径”:“用户”,
  "查询":{
  “bool”:{
  “必须”:[
  {"匹配":{“用户。第一”:“爱丽丝”}},
  {"匹配":{“用户。去年”:“史密斯”}}
  ]
  }
  }
  }
  }
  } '
  
  旋度xget ES_HOST: ES_PORT/my_index/_search吗?application/json漂亮' - h - type:“- d”{
  "查询":{
  “嵌套”:{
  “路径”:“用户”,
  "查询":{
  “bool”:{
  “必须”:[
  {"匹配":{“用户。第一”:“爱丽丝”}},
  {"匹配":{“用户。去年":"白"}}
  ]
  }
  },
  " inner_hits ": {
  “亮点”:{
  “字段”:{
  “用户。第一:{}
  }
  }
  }
  }
  }
  }' 

Elasticsearch搜索调优权威指南(1/3)