es之批量导入数据BulkES提供了个叫bulk的API来进批量操作批量导 数据{index:{index:book,type:doc,id:1}}{name:权的游戏}{index:{index:book,type:doc,id:2}}{name:疯狂的头}POSTbulkcurlXPOSTlocalhost:9200bulkHContentType:applicationjsondatabinarynamees之term的多种查询 介绍单词级别查询这些查询通常于结构化的数据,如:number,date,keyword等,不是对text。也就是说,全本查询之前要先对本内容进分词,单词级别的查询直接在相应字段的反向索引中精确查找,单词级别的查询般于数值、期等类型的字段上 准备作删除nba索引新增nba索引PUTnba{mappings:{properties:{birthDay:{type:date},birthDayStr:{type:keyword},age:{type:integer},code:{type:text},country:{type:text},countryEn:{type:text},displayAffiliation:{type:text},displayName:{type:text},displayNameEn:{type:text},draft:{type:long},heightValue:{type:float},jerseyNo:{type:text},playYear:{type:long},playerId:{type:keyword},position:{type:text},schoolType:{type:text},teamCity:{type:text},teamCityEn:{type:text},teamConference:{type:keyword},teamConferenceEn:{type:keyword},teamName:{type:keyword},teamNameEn:{type:keyword},weight:{type:text}}}}批量导数据(player件) 链接:https:pan。baidu。coms13Uahu1FxKiY6nfRYeY4Myw 提取码:t2qb Termquery精准匹配查询(查找号码为23的球员)POSTnbasearch{query:{term:{jerseyNo:23}}} ExsitQuery在特定的字段中查找非空值的档(查找队名非空的球员)POSTnbasearch{query:{exists:{field:teamNameEn}}} PrefixQuery查找包含带有指定前缀term的档(查找队名以Rock开头的球员)POSTnbasearch{query:{prefix:{teamNameEn:Rock}}} WildcardQuery支持通配符查询,表示任意字符,?表示任意单个字符(查找火箭队的球员)POSTnbasearch{query:{wildcard:{teamNameEn:Ros}}} RegexpQuery正则表达式查询(查找火箭队的球员)POSTnbasearch{query:{regexp:{teamNameEn:Ro。s}}} IdsQuery(查找id为1和2的球员)POSTnbasearch{query:{ids:{values:〔1,2〕}}}玩转es的范围查询 查找指定字段在指定范围内包含值(日期、数字或字符串)的文档。查找在nba打了2年到10年以内的球员POSTnbasearch{query:{range:{playYear:{gte:2,lte:10}}}}查找1980年到1999年出的球员POSTnbasearch{query:{range:{birthDay:{gte:01011999,lte:2022,format:ddMMyyyyyyyy}}}}玩转es的布尔查询 布尔查询 type description must 必须出现在匹配档中 filter 必须出现在档中,但是不打分 mustnot 不能出现在档中 should 应该出现在档中 must(查找名字叫做James的球员)POSTnbasearch{query:{bool:{must:〔{match:{displayNameEn:james}}〕}}} 效果同must,但是不打分(查找名字叫做James的球员)POSTnbasearch{query:{bool:{filter:〔{match:{displayNameEn:james}}〕}}} mustnot(查找名字叫做James的部球员)POSTnbasearch{query:{bool:{must:〔{match:{displayNameEn:james}}〕,mustnot:〔{term:{teamConferenceEn:{value:Eastern}}}〕}}} should(查找名字叫做James的打球时间应该在11到20年部球员)即使匹配不到也返回,只是评分不同POSTnbasearch{query:{bool:{must:〔{match:{displayNameEn:james}}〕,mustnot:〔{term:{teamConferenceEn:{value:Eastern}}}〕,should:〔{range:{playYear:{gte:11,lte:20}}}〕}}}如果minimumshouldmatch1,则变成要查出名字叫做James的打球时间在11到20年部球员POSTnbasearch{query:{bool:{must:〔{match:{displayNameEn:james}}〕,mustnot:〔{term:{teamConferenceEn:{value:Eastern}}}〕,should:〔{range:{playYear:{gte:11,lte:20}}}〕,minimumshouldmatch:1}}}玩转es的排序查询箭队中按打球时间从到排序的球员POSTnbasearch{query:{match:{teamNameEn:Rockets}},sort:〔{playYear:{order:desc}}〕}箭队中按打球时间从到,如果年龄相同则按照身从到低排序的球员POSTnbasearch{query:{match:{teamNameEn:Rockets}},sort:〔{playYear:{order:desc}},{heightValue:{order:asc}}〕}玩转es聚合查询之指标聚合 ES聚合分析是什么聚合分析是数据库中重要的功能特性,完成对个查询的数据集中数据的聚合计算,如:找出某字段(或计算表达式的结果)的最值、最值,计算和、平均值等。ES作为搜索引擎兼数据库,同样提供了强的聚合分析能。对个数据集求最、最、和、平均值等指标的聚合,在ES中称为指标聚合关系型数据库中除了有聚合函数外,还可以对查询出的数据进分组groupby,再在组上进指标聚合。在ES中称为桶聚合 maxminsumavg求出箭队球员的平均年龄POSTnbasearch{query:{term:{teamNameEn:{value:Rockets}}},aggs:{avgAge:{avg:{field:age}}},size:0} valuecount统计非空字段的文档数求出箭队中球员打球时间不为空的数量POSTnbasearch{query:{term:{teamNameEn:{value:Rockets}}},aggs:{countPlayerYear:{valuecount:{field:playYear}}},size:0}查出箭队有多少名球员POSTnbacount{query:{term:{teamNameEn:{value:Rockets}}}} Cardinality值去重计数查出箭队中年龄不同的数量POSTnbasearch{query:{term:{teamNameEn:{value:Rockets}}},aggs:{counAget:{cardinality:{field:age}}},size:0} stats统计countmaxminavgsum5个值查出箭队球员的年龄statsPOSTnbasearch{query:{term:{teamNameEn:{value:Rockets}}},aggs:{statsAge:{stats:{field:age}}},size:0} Extendedstatsstats多4个统计结果:平方和、方差、标准差、平均值加减两个标准差的区间查出箭队球员的年龄ExtendstatsPOSTnbasearch{query:{term:{teamNameEn:{value:Rockets}}},aggs:{extendStatsAge:{extendedstats:{field:age}}},size:0} Percentiles占百分位对应的值统计,默认返回〔1,5,25,50,75,95,99〕分位上的值查出箭的球员的年龄占POSTnbasearch{query:{term:{teamNameEn:{value:Rockets}}},aggs:{pecentAge:{percentiles:{field:age}}},size:0}查出箭的球员的年龄占(指定分位值)POSTnbasearch{query:{term:{teamNameEn:{value:Rockets}}},aggs:{percentAge:{percentiles:{field:age,percents:〔20,50,75〕}}},size:0}玩转es聚合查询之桶聚合 ES聚合分析是什么聚合分析是数据库中重要的功能特性,完成对个查询的数据集中数据的聚合计算,如:找出某字段(或计算表达式的结果)的最值、最值,计算和、平均值等。ES作为搜索引擎兼数据库,同样提供了强的聚合分析能。对个数据集求最、最、和、平均值等指标的聚合,在ES中称为指标聚合关系型数据库中除了有聚合函数外,还可以对查询出的数据进分组groupby,再在组上进指标聚合。在ES中称为桶聚合 TermsAggregation根据字段项分组聚合箭队根据年龄进分组POSTnbasearch{query:{term:{teamNameEn:{value:Rockets}}},aggs:{aggsAge:{terms:{field:age,size:10}}},size:0} order分组聚合排序箭队根据年龄进分组,分组信息通过年龄从到排序(通过指定字段)POSTnbasearch{query:{term:{teamNameEn:{value:Rockets}}},aggs:{aggsAge:{terms:{field:age,size:10,order:{key:desc}}}},size:0}箭队根据年龄进分组,分组信息通过档数从到排序(通过档数)POSTnbasearch{query:{term:{teamNameEn:{value:Rockets}}},aggs:{aggsAge:{terms:{field:age,size:10,order:{count:desc}}}},size:0}每球队按该队所有球员的平均年龄进分组排序(通过分组指标值)POSTnbasearch{aggs:{aggsTeamName:{terms:{field:teamNameEn,size:30,order:{avgAge:desc}},aggs:{avgAge:{avg:{field:age}}}}},size:0} 筛选分组聚合湖和箭队按球队平均年龄进分组排序(指定值列表)POSTnbasearch{aggs:{aggsTeamName:{terms:{field:teamNameEn,include:〔Lakers,Rockets,Warriors〕,exclude:〔Warriors〕,size:30,order:{avgAge:desc}},aggs:{avgAge:{avg:{field:age}}}}},size:0}湖和箭队按球队平均年龄进分组排序(正则表达式匹配值)POSTnbasearch{aggs:{aggsTeamName:{terms:{field:teamNameEn,include:LakersRo。Warriors。,exclude:Warriors,size:30,order:{avgAge:desc}},aggs:{avgAge:{avg:{field:age}}}}},size:0} RangeAggregation范围分组聚合NBA球员年龄按20,2035,35这样分组POSTnbasearch{aggs:{ageRange:{range:{field:age,ranges:〔{to:20},{from:20,to:35},{from:35}〕}}},size:0}NBA球员年龄按20,2035,35这样分组(起别名)POSTnbasearch{aggs:{ageRange:{range:{field:age,ranges:〔{to:20,key:A},{from:20,to:35,key:B},{from:35,key:C}〕}}},size:0} DateRangeAggregation时间范围分组聚合NBA球员按出年分组POSTnbasearch{aggs:{birthDayRange:{daterange:{field:birthDay,format:MMyyy,ranges:〔{to:011989},{from:011989,to:011999},{from:011999,to:012009},{from:012009}〕}}},size:0} DateHistogramAggregation时间柱状图聚合按天、、年等进聚合统计。可按year(1y),quarter(1q),month(1M),week(1w),day(1d),hour(1h),minute(1m),second(1s)间隔聚合NBA球员按出年分组POSTnbasearch{aggs:{birthdayaggs:{datehistogram:{field:birthDay,format:yyyy,interval:year}}},size:0}es之querystring查询 介绍querystring查询,如果熟悉lucene的查询语法,我们可以直接lucene查询语法写个查询串进查询,ES中接到请求后,通过查询解析器,解析查询串成对应的查询。 指定单个字段查询POSTnbasearch{query:{querystring:{defaultfield:displayNameEn,query:jamesORcurry}},size:100}POSTnbasearch{query:{querystring:{defaultfield:displayNameEn,query:jamesANDharden}},size:100} 指定多个字段查询POSTnbasearch{query:{querystring:{fields:〔displayNameEn,teamNameEn〕,query:JamesANDRockets}},size:100} 参考个人博客:cyz