_all、_source、store、index的使用
来源:互联网 发布:淘宝发布宝贝发货地址 编辑:程序博客网 时间:2024/05/16 09:04
1._all
1.1_all field
_all字段是一个很少用到的字段,它连接所有字段的值构成一个用空格(space)分隔的大string,该string被analyzed和index,但是不被store。当你不知道不清楚document结构的时候,可以用_all。如,有一document:
curl -XPUT 'http://127.0.0.1:9200/myindex/order/0508' -d '{ "name": "Scott", "age": "24"}'
用_all字段search:
curl -XGET "http://127.0.0.1:9200/myindex/order/_search?pretty" -d '{ "query": { "match": { "_all": "Scott 24" } }}'
也可以用query_string:
curl -XGET "http://127.0.0.1:9200/myindex/order/_search?pretty" -d '{ "query": { "query_string": { "query": "Scott 24" } }}'
输出:
{ "took" : 5, "timed_out" : false, "_shards" : { "total" : 2, "successful" : 2, "failed" : 0 }, "hits" : { "total" : 1, "max_score" : 0.2712221, "hits" : [ { "_index" : "myindex", "_type" : "order", "_id" : "0508", "_score" : 0.2712221 } ] }}
注意:_all是按空格(space)分隔的,所以,对于date类型就被analyzed为["year", "month", "day"]。如,一document:
{ "first_name": "John", "last_name": "Smith", "date_of_birth": "1970-10-24"}
curl -XGET "http://127.0.0.1:9200/myindex/order/_search?pretty" -d '{ "query": { "match": { "_all": "john smith 1970" } }}'
_all字段将包含["john", "smith", "1970", "10", "24"]。
所以,_all 字段仅仅是一个经过分析的 string 字段。它使用默认的分析器来分析它的值,而不管这值本来所在的字段指定的分析器。而且像所有 string 类型字段一样,你可以配置 _all 字段使用的分析器:
PUT /myindex/order/_mapping{ "order": { "_all": { "analyzer": "whitespace" } }}
1.2 Disable _all field
_all字段需要额外的CPU周期和更多的磁盘。所以,如果不需要_all,最好将其禁用,如:
curl -XPUT 'http://127.0.0.1:9200/myindex/order/_mapping' -d '{ "order": { "_all": { "enabled": true }, "properties": { ....... } }}'
1.3 Excluding fields from _all
你可能不想把_all禁用,而是希望_all包含某些特定的fields。通过include_in_all选项可以控制字段是否要被包含在_all字段中,默认值是true。在一个对象上设置include_in_all可以修改这个对象所有字段的默认行为。如,指定_all包含name:PUT /myindex/order/_mapping{ "order": { "include_in_all": false, "properties": { "name": { "type": "string", "include_in_all": true }, ... } }}
2._source
2.1 Disable _source field
ElasticSearch用JSOn字符串表示document主体,且保存在_source中。像其他保存的字段一样,_source字段也会在写入硬盘前压缩。_source字段不能被index,所以不能被搜索到。但是它却被store,所以_source还是要占用磁盘空间。不过,你可以禁用_source。
curl -XPUT 'http://127.0.0.1:9200/myindex/order/_mapping' -d '{ "order": { "_source": { "enabled": false }, "properties": {...... } }}'
不过,禁用_source之后,下面的功能将不再支持:
- 更新请求不再起作用,
- On the fly highlighting,
- 从ElasticSearch的一个index,重新索引到另一个时,要么改变mapping'或analysis,要么升级index到一个新的版本,
- 在index阶段,通过view document主体debug查询和聚合,
- 在以后自动修复index的功能丧失。
2.2 Including / Excluding fields from _source
在_sourcez字段store前,而在document被index之后,你可以减少_source字段的内容。移除_source中的fields和禁用_source有相似的缺点,特别是当你不能从一个ElasticSearch的index重新索引到另一个index。但是你可以用source filtering。如下是官网的一个例子:
PUT logs{ "mappings": { "event": { "_source": { "includes": [ "*.count", "meta.*" ], "excludes": [ "meta.description", "meta.other.*" ] } } }}PUT logs/event/1{ "requests": { "count": 10, "foo": "bar" }, "meta": { "name": "Some metric", "description": "Some metric description", "other": { "foo": "one", "baz": "two" } }}GET logs/event/_search{ "query": { "match": { "meta.other.foo": "one" } }}
当然,即使{"_source": {"enabled": true}},你也可以通过限定_source来请求指定字段:
GET /_search{ "query": { "match_all": {}}, "_source": [ "title", "created" ]}
3.store
store属于field的属性,如:
curl -XPUT 'http://127.0.0.1:9200/myindex/order/_mapping' -d '{ "order": { ...... "properties": { "name": {"type": "string", "store": "no", ......},...... } }}'
被store标记的fields被存储在和index不同的fragment中,以便于快速检索。虽然store占用磁盘空间,但是减少了计算。store的值可以取yes/no或者true/false,默认值是no或者false。
被store标记的fields可以用以下方式search(多个fields时,用fields=f1,f2,f3...):
curl -XGET 'http://hadoop:9200/myindex/order/0508?fields=age&pretty=true'
4.index
和store一样,index也是fields的属性。它用于配置每个被index的field,且默认值是analyzed。index有三个值:
- no:该field将不在被index。这样便于管理不需要被search的fields。
- analyzed:该field用配置的analyzer分析。它一般是小写且标记化的,使用ElasticSearch默认的配置StandardAnalyzer。
- not_analyzed:该field可以处理和index,但是不能改变其analyzer。默认使用的是ElasticSearch配置的KeywordAnalyzer,它把每个field作为一个标识处理。
curl -XPUT 'http://127.0.0.1:9200/myindex/order/_mapping' -d '{ "order": { ...... "properties": { "name": {"type": "string", "index": "no", ......},...... } }}'
- _all、_source、store、index的使用
- 图解Elasticsearch中的_source、_all、store和index属性
- 图解Elasticsearch中的_source、_all、store和index属性
- Elasticsearch中的_source、_all、store和index属性
- 图解Elasticsearch中的_source、_all、store和index属性
- 图解Elasticsearch中的_source、_all、store和index属性
- 图解Elasticsearch中的_source、_all、store和index属性
- 图解Elasticsearch中的_source、_all、store和index属性
- 图解Elasticsearch中的_source、_all、store和index属性
- elasticsearch的_all和_source
- elasticsearch的store属性跟_source字段
- elasticsearch的store属性跟_source字段
- elasticsearch的store属性跟_source字段
- Elasticsearch中mapping的_source和store介绍
- what is the difference between _source and _all in Elasticsearch
- ElasticSearch的_all域
- 工具[Source Insight]_Source Insight使用配置
- elasticsearch index and store
- C语言的指针、链表的原理和各类操作
- 使用opencv写汉字
- selenium+老虎前端开户用例
- python用openpyxl操作excel
- linux系统编程之文件与I/O(五):fcntl 函数与文件锁
- _all、_source、store、index的使用
- 帮你全面彻底搞定MATERIAL DESIGN的学习笔记
- 帮你全面彻底搞定MATERIAL DESIGN的学习笔记
- BroadcastReceiver简介
- Xamarin体验:使用C#开发iOS/Android应用
- 对象比较器
- 学生管理系统(JAVA)
- Single Number III
- 231. Power of Two