`
kfcman
  • 浏览: 400027 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ElasticSearch的_all域

 
阅读更多

 ElasticSearch默认为每个被索引的文档都定义了一个特殊的域 - '_all',它自动包含被索引文档中一个或者多个域中的内容, 在进行搜索时,如果不指明要搜索的文档的域,ElasticSearch则会去搜索_all域。_all带来搜索方便,其代价是增加了系统在索引阶段对CPU和存储空间资源的开销。

       默认情况,ElasticSarch自动使用_all所有的文档的域都会被加到_all中进行索引。可以使用"_all" : {"enabled":false} 开关禁用它。如果某个域不希望被加到_all中,可以使用 "include_in_all":false。例如:

 

  1. {  
  2.    "person": {  
  3.       "_all": { "enabled": true }  
  4.       "properties": {  
  5.          "name": {  
  6.             "type": "object",  
  7.             "dynamic": false,  
  8.             "properties": {  
  9.                "first": {  
  10.                   "type": "string",  
  11.                   "store": true,  
  12.                   "include_in_all": false  
  13.                },  
  14.                "last": {  
  15.                   "type": "string",  
  16.                   "index": "not_analyzed"  
  17.                }  
  18.             }  
  19.          },  
  20.          "address": {  
  21.             "type": "object",  
  22.             "include_in_all": false,  
  23.             "properties": {  
  24.                "first": {  
  25.                   "properties": {  
  26.                      "location": {  
  27.                         "type": "string",  
  28.                         "store": true,  
  29.                         "index_name": "firstLocation"  
  30.                      }  
  31.                   }  
  32.                },  
  33.                "last": {  
  34.                   "properties": {  
  35.                      "location": {  
  36.                         "type": "string"  
  37.                      }  
  38.                   }  
  39.                }  
  40.             }  
  41.          },  
  42.          "simple1": {  
  43.             "type": "long",  
  44.             "include_in_all": true  
  45.          },  
  46.          "simple2": {  
  47.             "type": "long",  
  48.             "include_in_all": false  
  49.          }  
  50.       }  
  51.    }  
  52. }  


查询时,_all和其它域一样使用:

 

  1. GET /profiles/_search  
  2. {  
  3.     "query": {  
  4.         "match": {  
  5.            "_all": "food"  
  6.         }  
  7.     }  
  8. }  

 

或者在不提供搜索域的情况下,默认会搜索_all,例如:

  1. GET /profiles/_search  
  2. {  
  3.     "query": {  
  4.         "query_string": {  
  5.             "query": "food"  
  6.         }  
  7.     }  
  8. }  

 

参考资源

1. Lucene Scoring and elasticsearch's _all Field

分享到:
评论

相关推荐

    ElasticSearch7.2.1+SearchGuard+Kibana+KerBeros集群测试环境部署文档.pdf

    《Elasticsearch 7.2.1 + SearchGuard + Kerberos + Kibana 集群测试环境部署详解》 本文档将详细阐述如何在Elasticsearch 7.2.1版本的基础上,集成SearchGuard安全插件、Kerberos认证服务以及Kibana可视化界面,...

    Ruby-ActiveRecordTurntable是一个数据库分片的ActiveRecord扩展

    4. **Elasticsearch集成**:可以与Elasticsearch搜索引擎配合,实现全文搜索。 5. **Scoping(作用域)**:定义分片的作用域,方便在代码中切换和操作不同的分片。 6. **Chaining(链式调用)**:与其他ActiveRecord...

    javascript_guideBook.rar

    7. **ES6及后续版本新特性**:ECMAScript 6引入了许多新特性,如箭头函数、模板字符串、类、模块、解构赋值等,后续版本如ES7、ES8等也不断添加新功能,如Async/Await、Promise.all()等。 8. **AJAX与Fetch API**:...

    开发资料下载_Javascript资料搜集

    6. **闭包**:闭包是JavaScript中的一个重要概念,它允许函数访问并操作其词法作用域内的变量,即使该函数在其外部被调用。闭包常用于实现私有变量和模块模式。 7. **对象和原型**:JavaScript的继承机制基于原型链...

    webext-dynamic-content-scripts:WebExtension模块

    这样,您无需使用广泛的<all>权限。 注意:此插件包含用于 (适用于Chrome)的 。导游 安装您可以下载并将其包含在manifest.json 。 npm install webext-dynamic-content-scripts // This module is only offered ...

    JavaScript源码大全

    6. **ES6及以后的新特性**:ECMAScript(ES)是JavaScript的标准,ES6(也称为ES2015)引入了许多新特性,如箭头函数、模板字符串、类、模块等。之后的版本如ES7、ES8等也有诸多增强,如async/await、Promise.all等...

    random-it-all

    `let`和`const`是ES6引入的,提供了块级作用域,而`var`则有函数作用域。 - **数据类型**:JavaScript有七种数据类型,包括基本类型(Number、String、Boolean、Null、Undefined、Symbol和BigInt)以及引用类型...

    动态语言与JavaScript中文帮助文档

    闭包是JavaScript中的重要概念,它允许函数访问并操作外部作用域的变量,即使该函数在其外部作用域已被销毁。 3. **原型与继承**:JavaScript采用原型链实现对象的继承,每个对象都有一个`__proto__`属性指向它的...

    javascript源码大全

    后续版本如ES7、ES8等也增加了许多功能,如async/await、Promise.all、Map和Set等。 七、JavaScript库和框架 JavaScript社区发展迅速,涌现出了许多优秀的库和框架,如jQuery简化DOM操作,React.js和Vue.js用于...

    几乎完整的前端面试问题答案

    - 变量与作用域:理解var、let和const的差异,以及作用域的概念,包括全局作用域、局部作用域和块级作用域。 - 函数与闭包:掌握函数的定义、调用以及闭包的原理和应用场景。 2. **操作符与控制结构** - 比较...

    caseOfJSjavascript基础学习

    后续版本如ES7、ES8、ES9也不断加入新功能,如Async/Await、Rest/Spread、Promise.all等。 以上只是JavaScript基础学习的一部分,深入学习还需要理解闭包、作用域、作用域链、this指向、错误处理、类型转换等复杂...

    js_example

    6. **异步编程**:JavaScript是单线程的,通过异步编程处理耗时任务,如定时器(setTimeout、setInterval)、回调函数、Promise(链式调用、all、race)、async/await(基于Promise的异步控制流)。 7. **ES6及后续...

    三分钟学前端JS篇.pdf

    - ES10(ES2019)新增了Array的`flat()`和`flatMap()`方法,`String`的`trimStart()`和`trimEnd()`方法,以及`Object.fromEntries()`等。 4. JS高级特性 - 继承:ES5和ES6提供了多种实现继承的方式,包括原型链...

    JavaScript快速查询手册(pdf)

    ECMAScript是JavaScript的标准化规范,ES6(也称ES2015)引入了许多新特性,如箭头函数(`()=>{}`)、模板字符串(``)和类(`class`)。后续的ES7、ES8等版本继续扩展了语言特性,如async/await、Promise.all和...

    JavaScript 程序开发手册

    7. **ES6及更高版本**:ECMAScript(ES)是JavaScript的标准化规格,ES6(也称为ES2015)引入了许多新特性,如箭头函数、模板字符串、类和模块。ES7及以后的版本继续引入新功能,如async/await、Promise.all和解构...

    JavaScript小技巧全集

    - `Promise.all()`用于并行处理多个异步操作,当所有操作都完成时返回结果。 8. Class与继承: - ES6中的`class`语法糖简化了面向对象编程,但本质仍是基于原型的继承。 - `super`关键字用于访问和调用父类的...

    谈谈为什么你的 JavaScript 代码如此冗长

    另一种方法是使用`Promise.all`,它可以并行处理多个Promise,并在所有Promise都解析后返回一个包含所有结果的数组。 ```javascript async function fetchData(dataSet) { const pokemonPromises = dataSet.map...

    01-ES6快速入门.pdf

    ES6从2015年开始,遵循每年一个新版本的发布节奏,如ES2015、ES2016、ES2017等。ES6不仅为开发者提供了新的语法,同时也引入了许多新的功能和改进,比如let和const关键字、解构赋值、箭头函数、模板字符串等,还提供...

    FullStack_Recipe

    此外,函数是JavaScript的核心,了解函数的定义、调用、作用域及闭包是基础阶段的重点。 2. **面向对象编程** JavaScript的面向对象特性主要体现在原型链、构造函数和实例化过程。理解Object.prototype、__proto__...

Global site tag (gtag.js) - Google Analytics