映射是存储在索引中的文档的大纲。它定义数据类型,如geo_point或文档和规则中存在的字段的字符串和格式,以控制动态添加的字段的映射。 例如,
POST http://localhost:9200/bankaccountdetails
请求正文
{
“mappings”:{
“report”:{
“_all”:{
“enabled”:true
},
"properties":{
"name":{ "type":"string"}, "date":{ "type":"date"},
"balance":{ "type":"double"}, "liability":{ "type":"double"}
}
} } } JSON 响应
{“acknowledged”:true}
JSON
字段数据类型
Elasticsearch支持文档中字段的多种不同数据类型。以下数据类型用于在Elasticsearch中存储字段 -
核心数据类型 - 这些是几乎所有系统支持的基本数据类型,如整数,长整数,双精度,短整型,字节,双精度,浮点型,字符串,日期,布尔和二进制。
复杂数据类型 - 这些数据类型是核心数据类型的组合。类似数组,JSON对象和嵌套数据类型。以下是嵌套数据类型的示例 -
POST http://localhost:9200/tabletennis/team/1
请求正文
{
“group” : “players”,
“user” : [
{
“first” : “dave”, “last” : “jones”
},
{
"first" : "kevin", "last" : "morris"
} ] } <!-- more --> 地理数据类型 这些数据类型用于定义地理属性。 例如,geo_point用于定义经度和纬度,geo_shape用于定义不同的几何形状,如矩形。
专用数据类型
这些数据类型用于特殊目的,如IPv4(“ip”)接受IP地址,完成数据类型用于支持自动完成建议,token_count用于计算字符串中的令牌数量。
映射类型
每个索引都具有一个或多个映射类型,用于将索引的文档划分为逻辑组。 映射可以基于以下参数有些不同 -
元字段
这些字段提供有关映射和与其关联的其他对象的信息。 例如_index,_type,_id和_source字段。
字段
不同的映射包含不同数量的字段和具有不同数据类型的字段。
动态映射
Elasticsearch为自动创建映射提供了一个用户友好的机制。用户可以将数据直接发布到任何未定义的映射,Elasticsearch将自动创建映射,这称为动态映射。 例如,
POST http://localhost:9200/accountdetails/tansferreport
请求正文
{
“from_acc”:”7056443341”, “to_acc”:”7032460534”,
“date”:”11/1/2016”, “amount”:10000
}
映射参数
映射参数定义映射的结构,关于字段和关于存储的信息以及如何在搜索时分析映射的数据。 这些是以下映射参数 -
analyzer
boost
coerce
copy_to
doc_values
dynamic
enabled
fielddata
geohash
geohash_precision
geohash_prefix
format
ignore_above
ignore_malformed
include_in_all
index_options
lat_lon
index
fields
norms
null_value
position_increment_gap
properties
search_analyzer
similarity
store
term_vector
当在搜索操作期间处理查询时,任何索引中的内容由分析模块分析。该模块由分析器,分词器,分词器过滤器和字符过滤器组成。 如果没有定义分析器,则默认情况下注册内置的分析器,分词器,分词器过滤器和字符过滤器到分析模块。例如。
POST http://localhost:9200/pictures
请求正文
{
“settings”: {
“analysis”: {
“analyzer”: {
“index_analyzer”: {
“tokenizer”: “standard”, “filter”: [
“standard”, “my_delimiter”, “lowercase”, “stop”,
“asciifolding”, “porter_stem”
]
},
"search_analyzer": {
"tokenizer": "standard", "filter": [
"standard", "lowercase", "stop", "asciifolding", "porter_stem"
]
}
},
"filter": {
"my_delimiter": {
"type": "word_delimiter",
"generate_word_parts": true,
"catenate_words": true,
"catenate_numbers": true,
"catenate_all": true,
"split_on_case_change": true,
"preserve_original": true,
"split_on_numerics": true,
"stem_english_possessive": true
}
}
} } } JSON 响应
{“acknowledged”:true}
JSON
分析器
分析器由令牌器和可选的令牌过滤器组成。这些分析器在具有逻辑名的分析模块中注册,可以在映射定义或某些API中引用它们。有许多默认分析仪如下 -
编号 分析器 描述
1 标准分析器(标准) 为此分析仪设置停止字词和最大令牌长度。默认情况下,停用字词列表为空,最大标记长度(max_token_length)为255。
2 简单分析器(简单) 这个分析器由小写分词器组成。
3 空白分析器(空格) 这个分析器由空白分词器组成。
4 关键字分析器(关键字) 此分析器将整个流标记为单个令牌。 它可以用于邮政编码。
5 模式分析器(模式) 该分析器主要处理正则表达式。可以在此分析器中设置像小写字母,模式,标志,无用词的设置。
6 语言分析器 该分析器处理像印第安语,阿拉伯语,荷兰语等语言。
7 雪球分析器(雪球) 此分析仪使用标准分段器,带有标准滤波器,小写字母过滤器,停止过滤器和雪球过滤器。
8 停止分析器(停止) stopwords和stopwords_path可以配置。 默认情况下,停用词初始化为英语停用词,stopwords_path包含具有停用词的文本文件的路径。
9 自定义分析器(自定义) 此分析器用于创建带有可选令牌过滤器和字符过滤器的令牌化器的定制分析器。可以在此分析器中配置像tokenizer,filter,char_filter和position_increment_gap等设置。
令牌器/标记生成器
令牌器用于从Elasticsearch中的文本生成令牌。 通过考虑空白或其他标点符号,文本可以分解成令牌。 Elasticsearch有大量内置的分词器,可以在自定义分析器中使用。
编号 标记生成器 描述
1 标准标记生成器(标准) 这是建立在基于语法的标记生成器,以及max_token_length可以配置为这个标记生成器。
2 边缘NGram标记生成器(edgeNGram) 可以为此分词器设置如:min_gram,max_gram,token_chars的设置。
3 关键字标记生成器(关键字) 这将生成整个输入作为输出,可以为此设置buffer_size。
4 字母标记生成器 这将捕获整个单词,直到遇到一个非字母字符。
5 小写标记生成器(小写) 这与标记生成器相同,但是在创建令牌之后,会将它们更改为小写。
6 NGram令牌器(nGram) 类似:min_gram(默认值为1),max_gram(默认值为2)和token_chars等设置可以为这个分词器。
7 空格标记符(空格) 这将根据空格分隔文本。
8 模式分词器(模式) 这使用正则表达式作为标记分隔符。可以为此分词器设置模式,标志和组设置。
9 UAX电子邮件URL令牌(uax_url_email) 这使用正则表达式作为标记分隔符。 可以为此分词器设置模式,标志和组设置。
10 这与标准分词器工作方式相同,但它将电子邮件和URL作为单个标记。
11 路径层次化标记分隔符(path_hierarchy) 此标记器生成输入目录路径中存在的所有可能的路径。可用于此分词器的设置是分隔符(默认为/),replacement,buffer_size(默认为1024),reverse(默认为false)和skip(默认为0)。
12 经典分词器(经典) 这在基于令牌的语法基础上工作。可以为此分词器设置:max_token_length。
13 泰语分词器(泰语) 此分词器用于泰语,并使用内置的泰语分词算法。
令牌过滤器
令牌过滤器从令牌化器接收输入,然后这些过滤器可以修改,删除或添加输入的文本。 Elasticsearch提供了大量内置的令牌过滤器。它们中的大多数已经在前面的部分中解释。
字符过滤器
这些过滤器在分词器之前处理文本。 字符过滤器查找特殊字符或html标签或指定的模式,然后删除或更改为适当的词,如’&‘到和,删除html标记标记。 这里是同义词在synonym.txt中指定的分析器的示例 -
{
“settings”:{
“index”:{
“analysis”:{
“analyzer”:{
“synonym”:{
“tokenizer”:”whitespace”, “filter”:[“synonym”]
}
},
"filter":{
"synonym":{
"type":"synonym", "synonyms_path":"synonym.txt", "ignore_case":"true"
}
}
}
} } }