Elasticsearch _search查询参数及过滤
笔记源自 : Elastic 中国社区官方博客
文章目录
- GET /_search 简单搜索
- Ids 指定Id值查询
- Prefix 以特定前缀开头
- Term 精确匹配值
- Terms多字段匹配
- Terms_set 指定匹配数组内容
- Wildcard 通配符查询
- Regexp 正则匹配
- Match 根据指定属性名称与值查询
- term和match的区别
- Match中的模糊匹配与强制匹配 : 'operator'
- Match_phrase 顺序匹配
- Multi_match 根据模糊属性名称与指定值查询
- Compound 多条件符合查询
- Disjunction 查询子句
- SQL 查询
- Msearch 多查询一次提交
- Mget 一次查找多个文档
- Elasticsearch 关于位置查询
- Range 范围查询与 Sort 排序
- 关于Sort日期排序
- Exists 查询字段是否存在
- Named 新增字段列出匹配的值
- Source filtering 控制输出的的字段
- Highlighting 突出显示字段
- Count 统计文档内容数量
- Mapping 查询文档数据类型
- Profile 调试工具
- 总结
测试数据
以下案例都以twitter索引测试
POST _bulk
{ "index" : { "_index" : "twitter", "_id": 1} }
{"user":"双榆树-张三","message":"今儿天气不错啊,出去转转去","uid":2,"age":20,"city":"北京","province":"北京","country":"中国","address":"中国北京市海淀区","location":{"lat":"39.970718","lon":"116.325747"}}
{ "index" : { "_index" : "twitter", "_id": 2 }}
{"user":"东城区-老刘","message":"出发,下一站云南!","uid":3,"age":30,"city":"北京","province":"北京","country":"中国","address":"中国北京市东城区台基厂三条3号","location":{"lat":"39.904313","lon":"116.412754"}}
{ "index" : { "_index" : "twitter", "_id": 3} }
{"user":"东城区-李四","message":"happy birthday!","uid":4,"age":30,"city":"北京","province":"北京","country":"中国","address":"中国北京市东城区","location":{"lat":"39.893801","lon":"116.408986"}}
{ "index" : { "_index" : "twitter", "_id": 4} }
{"user":"朝阳区-老贾","message":"123,gogogo","uid":5,"age":35,"city":"北京","province":"北京","country":"中国","address":"中国北京市朝阳区建国门","location":{"lat":"39.718256","lon":"116.367910"}}
{ "index" : { "_index" : "twitter", "_id": 5} }
{"user":"朝阳区-老王","message":"Happy BirthDay My Friend!","uid":6,"age":50,"city":"北京","province":"北京","country":"中国","address":"中国北京市朝阳区国贸","location":{"lat":"39.918256","lon":"116.467910"}}
{ "index" : { "_index" : "twitter", "_id": 6} }
{"user":"虹桥-老吴","message":"好友来了都今天我生日,好友来了,什么 birthday happy 就成!","uid":7,"age":90,"city":"上海","province":"上海","country":"中国","address":"中国上海市闵行区","location":{"lat":"31.175927","lon":"121.383328"}}
`
GET /_search 简单搜索
GET /_search : 搜索所有文档
同等命令 : GET /_all/_search
GET /_search?size=20 : 指定返回个数,默认是10个
POST /index1,index2,index3/_search : 搜索指定多个名称文档
POST /index*,-index3/_search : 模糊搜索多个指定文档
GET _cat/indices 查询所有索引名称内存等信息
GET _cat/indices?v 查询所有索引名称内存等详细信息
在写上面的多个索引操作查询的时候,在两个索引之间不能加入空格
例 GET /twitter, twitter1/_search
GET index/_search?size=2&from=2 : 配合 from 来进行分页
同等命令 :
GET index/_search
{"size": 2,"from": 2, "query": {"match_all": {}}
}
这是一个在所有字段中搜索字符串 “guide” 的基本匹配查询:
GET /twitter/_search?q=guide
指定字段 :
GET /twitter/_search?q=title:action
只对 source 的内容感兴趣的话,我们可以使用:
GET twitter/_doc/1/_source
我们也可以只获取 source 的部分字段:
GET twitter/_doc/1?_source=city,age,province
Ids 指定Id值查询
GET twitter/_search
{"query": {"ids": {"values": ["1", "2"]}}
}
Prefix 以特定前缀开头
查询 user 字段里以“朝”为开头的所有文档 :
GET twitter/_search
{"query": {"prefix": {"user": {"value": "朝"}}}
}
Term 精确匹配值
使用 user.keyword 来对“朝阳区-老贾”进行精确匹配查询
GET twitter/_search
{"query": {"term": {"user.keyword": {"value": "朝阳区-老贾"}}}
}
在这里我们使用了city.keyword。对于一些刚接触 Elasticsearch的人来说,这个可能比较陌生。正确的理解是 city 在我们的 mapping 中是一个 multi-field 项。它既是 text 也是 keyword 类型。对于一个 keyword 类型的项来说,这个项里面的所有字符都被当做一个字符串。它们在建立文档时,不需要进行 index。keyword 字段用于精确搜索,aggregation 和排序(sorting)。keyword会使返回结果的_score 项为0
Terms多字段匹配
查询 user.keyword 里含有“双榆树-张三”或“东城区-老刘”的所有文档。
GET twitter/_search
{"query": {"terms": {"user.keyword": ["双榆树-张三","东城区-老刘"]}}
}
Terms_set 指定匹配数组内容
测试数据 :
PUT /job-candidates
{"mappings": {"properties": {"name": {"type": "keyword"},"programming_languages": {"type": "keyword"},"required_matches": {"type": "long"}}}
}PUT /job-candidates/_doc/1?refresh
{"name": "Jane Smith","programming_languages": [ "c++", "java" ],"required_matches": 2
}PUT /job-candidates/_doc/2?refresh
{"name": "Jason Response","programming_languages": [ "java", "php" ],"required_matches": 2
}
refresh : 数据插入立即生效可以使更改可见以进行搜索的操作。通常会有一个 refresh timer 来定时完成这个操作。这个周期为1秒。这也是我们通常所说的 Elasticsearch 可以实现秒级的搜索。当然这个 timer 的周期也可以在索引的设置中进行配置。如果我们想让我们的结果马上可以对搜索可见,我们可以用refresh=true
找出在 programming_languages 中同时含有 c++, java 以及 php 中至少有两个 term 的文档。在这里,我们使用了一个在文档中定义的字段 required_matches 来定义最少满足要求的 term 个数,这里只数组中任意搭配,只要满足数量即可:
GET /job-candidates/_search
{"query": {"terms_set": {"programming_languages": {"terms": [ "c++", "java", "php" ],"minimum_should_match_field": "required_matches"}}}
}
terms : 指定要满足的数组
minimum_should_match_field : 指定文档中条件的属性名
required_matches 在文档的值为2,所以指定该值最后结果就是最少满足‘terms’属性中的至少2个
如果没有一个专有的字段来定义满足条件的个数的话
GET /job-candidates/_search
{"query": {"terms_set": {"programming_languages": {"terms": [ "c++", "java", "php" ],"minimum_should_match_script": {"source": "2"}}}}
}
Wildcard 通配符查询
可以使用 wildcard 查询一个字符串里含有的字符:
? 匹配任何字符,* 匹配零个或多个字符
GET twitter/_search
{"query": {"wildcard": {"city.keyword": {"value": "*海"}}}
}
上面查询在 city 这个关键字中含有“海”的文档
Regexp 正则匹配
POST /twitter/_search
{"query": {"regexp": {"user": "t[a-z]*y"}},"_source": ["user","message"],"highlight": {"fields": {"authors": {}}}
}
Match 根据指定属性名称与值查询
根据指定属性值查询
GET twitter/_search
{"query": {"match": {"city": "北京"}}
}同等 : GET twitter/_search
{"query": {"script": {"script": {"source": "doc['city.keyword'].contains(params.name)","lang": "painless","params": {"name": "北京"}}}}
}--script query 的方法比较低效同等 :
GET twitter/_search?q=city:"北京"去除_score(匹配度) :
GET twitter/_search
{"query": {"bool": {"filter": {"term": {"city.keyword": "北京"}}}}
}
term和match的区别
关于查询过滤条件中term和match的区别
term的定义,term是代表完全匹配,也就是精确查询,搜索前不会再对搜索词进行分词拆解
match进行搜索的时候,会先进行分词拆分,拆完后,再来匹配
借鉴博客
Match中的模糊匹配与强制匹配 : ‘operator’
or :匹配单个或多个字符 ,不区分大小写,不区分顺序
and :必须全匹配
GET twitter/_search
{"query": {"match": {"user": {"query": "朝阳区-老贾","operator": "or"}}}
}
默认operator为OR,查询的结果是任何文档匹配:“朝”,“阳”,“区”,“老”及“贾”这5个字中的任何一个将被显示GET twitter/_search
{"query": {"match": {"user": "朝阳区-老贾"}}
}
设置参数 minimum_should_match 来设置至少匹配的 term
如下至少要匹配“朝”,“阳”,“区”,“老” 及 “贾” 这5个中的3个字才可以
GET twitter/_search
{"query": {"match": {"user": {"query": "朝阳区-老贾","operator": "or","minimum_should_match": 3}}}
}
Match_phrase 顺序匹配
match_phrase与match 类似,但是match 查询时时不用分先后顺序的,match_phrase 严格按顺序匹配。
如下 : 它要求 Happy 必须是在 birthday 的前面
GET twitter/_search
{"query": {"match_phrase": {"message": "Happy birthday"}},"highlight": {"fields": {"message": {}}}
}
使用了 slop 为1,表面 Happy 和 birthday 之前是可以允许一个 单词 的差别
"query": {"match_phrase": {"message": {"query": "Happy birthday","slop": 1}
}
此时 ‘Birthday Good Happy My Friend!’可以被搜索到,因为满足中间可间隔一个词
当 设置 "slop"值为 2 时,则可以搜索到 Birthday Happy ,此时搜索不到 Birthday Good Happy
当设置 "slop"值为 3 时,Birthday Happy和 Birthday Good Happy都可以被搜索到。
它的原因是转置需要 2 个slop,而 Birthday 和 Happy 之间还多了一个 Good,所以需要 slop 为 2 + 1 = 3 才能搜索到。
Multi_match 根据模糊属性名称与指定值查询
在上面的搜索之中,我们特别指明一个专有的 field 来进行搜索,但是在很多的情况下,我们并胡知道是哪一个 field 含有这个关键词,那么在这种情况下,我们可以使用 multi_match 来进行搜索:
GET twitter/_search
{"query": {"multi_match": {"query": "朝阳","fields": ["user","address^3","message"],"type": "best_fields"}}
}
同时对三个 fields: user,adress 及 message进行搜索
best_fields : 最终的分数 _score 是按照得分最高的那个字段的分数为准,更多类型
address^3 : 对 address 含有 “朝阳” 的文档的分数进行3倍的加权
Compound 多条件符合查询
复合查询指把很多个 leaf 查询组合起来从而形成更为复杂的查询
例 :
POST _search
{"query": {"bool" : {"must" : {"match": {"city": "北京" },"match" : { "user" : "kimchy" }},"filter": {"match" : { "city" : "北京" }},"must_not" : {"range" : {"age" : { "gte" : 10, "lte" : 20 }}},"should" : [{ "term" : { "tag" : "wow" } },{ "term" : { "tag" : "elasticsearch" } }],"minimum_should_match" : 1,"boost" : 1.0}}
}"query": { "bool" : {"must" : [],//与 AND 等价。"should" : [],//与 NOT 等价"must_not" : [],//与 OR 等价"filter": //与must相同结果,但不会参与评分}}
由 bool 下面的 must, must_not, should 及 filter 共同来组成的。你可以使用 minimum_should_match 参数指定返回的文档必须匹配的应当子句的数量或百分比。
例 : 借鉴博客
“query”: “中国公民学生老农民”, 分词后的词为:中、国、公、民、学、生、老、农、民
“minimum_should_match”: 4 为正整数,是指最少匹配数。是指将 query 分词后的词的数量 A,要求从 A 中最少匹配中的词的数量为4。这里匹配中的词是:公、民、农、民 。
“minimum_should_match”: “55%” 为正整数,是指最少匹配百分比。是指将 query 分词后的词的数量 A,要求匹配中的词的数量b,b/a 即为正数的百分比。
如果布尔查询包含至少一个 should 子句,并且没有 must 或 filter 子句,则minimum_should_match默认值为1。否则,默认值为0。
must : 必须满足的条件,按相关性降序排序显示
must_not : 可以把一些满足条件的排出在外(not in )
should : 它表述“或”的意思,也就是有就更好,没有就算了。如果条件满足,其相关性会更高,那么搜索得到的结果会排在前面
filter : 与must相同表示满足条件,但不会参与评分
查询类型对 hits 及 _score 的影响
Clause | 影响 #hits | 影响 _score |
---|---|---|
must | Yes | Yes |
must_not | Yes | No |
should | No* | Yes |
filter | Yes | No |
should 只有在特殊的情况下才会影响 hits。在正常的情况下它不会影响搜索文档的个数。那么在哪些情况下会影响搜索的结果呢?这种情况就是针对只有 should 的搜索情况,也就是如果你在 bool query 里,不含有 must, must_not 及 filter 的情况下,一个或更多的 should 必须有一个匹配才会有结果
filter与must的区别 : 借鉴博客
- 同样是按条件匹配
- filter不统计相关度,must统计相关度
- must比filter计算更复杂,更耗时
Disjunction 查询子句
返回与一个或多个包在一起的查询(称为查询子句或子句)匹配的文档。
如果返回的文档与多个查询子句匹配,则 dis_max 查询为该文档分配来自任何匹配子句的最高相关性得分,并为任何其他匹配子查询分配平局打破增量。
例 :
GET twitter/_search
{"query": {"dis_max": {"queries": [{ "term" : { "city.keyword": "北京" } },{ "match" : { "address": "北京" } }],"tie_breaker": 0.7}}
}
dis_max参数 :
queries :包含一个或者多个查询子句。返回的文档必须匹配其中的一个或者多个,如果文档匹配了多个,则返回最高得分。
tie_breaker :一个介于0~1.0之间的Float数,用于当文档匹配了多个查询子句时提升相关度分数。默认为0.0
在上面的 dis_max 查询中,它将返回任何一个在 queries 中所定的查询的文档。每个匹配分分数是按照如下的规则来进行计算的:
- 如果一个文档匹配其中的一个或多个查询,那么最终的得分将以其中最高的那个得分来进行计算
- 在默认的情况下,tie_breaker 的值为0。它可以是 0 到 1.0 之间的数
如果文档匹配多个子句,则 dis_max 查询将计算该文档的相关性得分,如下所示:
- 从具有最高分数的匹配子句中获取相关性分数。
- 将来自其他任何匹配子句的得分乘以 tie_breaker 值。
- 将最高分数加到相乘的分数上。
如果 tie_breaker 值大于0.0,则所有匹配子句均计数,但得分最高的子句计数最高。
SQL 查询
Elasticsearch 也对 SQL 有支持:
GET /_sql?
{"query": """SELECT * FROM twitter WHERE age = 30"""
}
可以通过如下的方法得到它对应的 DSL 语句,就是普通查询语句 :
GET /_sql/translate
{"query": """SELECT * FROM twitter WHERE age = 30"""
}
返回 :
{"size" : 1000,"query" : {"term" : {"age" : {"value" : 30,"boost" : 1.0}}},"_source" : {"includes" : ["address","message","region","script.source","user"],"excludes" : [ ]},"docvalue_fields" : [{"field" : "age"},{"field" : "city"},{"field" : "country"},{"field" : "location"},{"field" : "province"},{"field" : "script.params.value"},{ "field" : "uid"}],"sort" : [{"_doc" : {"order" : "asc"}}]
}
Msearch 多查询一次提交
GET twitter/_msearch
{"index":"twitter"}
{"query":{"match_all":{}},"from":0,"size":1}
{"index":"twitter"}
{"query":{"bool":{"filter":{"term":{"city.keyword":"北京"}}}}, "size":1}
{"index":"twitter1"}
{"query":{"match_all":{}}}
会将多个返回结果一并提交一并返回,一个查询报错不会影响另一个结果 :
Mget 一次查找多个文档
GET _mget
{"docs": [{"_index": "twitter","_id": 1},{"_index": "twitter","_id": 2}]
}
我们也可以只获得部分字段:
GET _mget
{"docs": [{"_index": "twitter","_id": 1,"_source":["age", "city"]},{"_index": "twitter","_id": 2,"_source":["province", "address"]}]
}
我们也可以简单地写为:
GET twitter/_doc/_mget
{"ids": ["1", "2"]
}
Elasticsearch 关于位置查询
例子 :
GET twitter/_search
{"query": {"bool": {"must": [{"match": {"address": "北京"}}]}},"post_filter": {"geo_distance": {"distance": "3km","location": {"lat": 39.920086,"lon": 116.454182}}},"sort": [{"_geo_distance": {"location": "39.920086,116.454182","order": "asc","unit": "km"}}]
}
在这里,我们查找在地址栏里有“北京”,并且在以位置(116.454182, 39.920086)为中心的3公里以内的所有文档,使用 sort 来对我们的搜索的结果进行排序。按照升序排列。
如果 _score 不是 sort 的field,那么在使用 sor t后,所有的结果的 _score 都变为 null。
filter与post_filter两个查询结果是一致的 :
"filter": {"geo_distance": {"distance": "5km","location": {"lat": 39.920086,"lon": 116.454182}
}
"post_filter": {"geo_distance": {"distance": "5km","location": {"lat": 39.920086,"lon": 116.454182}}}
Range 范围查询与 Sort 排序
例 :
GET twitter/_search
{"query": {"range": {"age": {"gte": 30,"lte": 40}}},"sort": [{"age": {"order": "desc"}},{"_geo_distance": {"location": {"lat": 39.920086,"lon": 116.454182},"order": "asc"}}]
}
range : 查询范围
sort : 可以针对多个字段同时进行排序。上面首先以 age 进行降序排序。如果是 age 是一样的话,那么久按照距离来进行排序。
支持日期排序 :
POST /twitter/_search
{"query": {"range": {"publish_date": {"gte": "2015-01-01","lte": "2015-12-31"}}},"_source": ["title","publish_date","publisher"]
}
关于Sort日期排序
如果有 date 这样的字段,我们可以添加 format 来显示易于阅读的格式:
"sort": [{"age": {"order": "desc"}},{"DOB": {"order": "desc","format": "date"}}]
在上面,我们使用 “format”: “date” 来显示如下的格式:
否则,我们可能看到的是是一个整型值。
sort可以使用 _doc 来进行排序。这中排序是基于 _id 来进行排序的,从小到大进行排列
例 :
GET twitter/_search
{"query": {"range": {"age": {"gte": 30,"lte": 40}}},"sort": ["_doc"]
}
Exists 查询字段是否存在
例 :
插入一条新数据至twitter,该数据中不包含city字段
PUT twitter/_doc/20
{"user" : "王二","message" : "今儿天气不错啊,出去转转去","uid" : 20,"age" : 40,"province" : "北京","country" : "中国","address" : "中国北京市海淀区","location" : {"lat" : "39.970718","lon" : "116.325747"}
}
以下这样查询时,是返回结果是不包含上面的新增数据
GET twitter/_search
{"query": {"exists": {"field": "city"}}
}
如果文档里只要 city 这个字段不为空,那么就会被返回。反之,如果一个文档里city这个字段是空的,那么就不会返回。
如果查询不含 city 这个字段的所有的文档,可以这样查询 :
GET twitter/_search
{"query": {"bool": {"must_not": {"exists": {"field": "city"}}}}
}
插入时指定字段值为null,那么exists也会过滤掉。
Named 新增字段列出匹配的值
可以使用 _name 为一个 filter 或 query 来取一个名字,如果匹配成功,则会在最后新增一个matched_queries属性,展示匹配成功后**_name**指定显示的名称
比如:
GET twitter/_search
{"query": {"bool": {"must": [{"match": {"city": {"query": "北京","_name": "城市"}}},{"match": {"country": {"query": "中国","_name": "国家"}}}],"should": [{"match": {"_id": {"query": "1","_name": "ID"}}}]}}
}
匹配到后会多了一个叫做 matched_queries 的字段。在它的里面罗列了每个匹配了的查询。第一个返回的查询结果是三个都匹配了的,但是第二个来说就只有两项是匹配的。
Source filtering 控制输出的的字段
通过 filter_path 来控制输出的的字段 :
GET twitter/_search?filter_path=hits.hits._score,hits.hits._source.field通过 _source来控制输出的的字段 :
GET twitter/_search
{"_source": ["user", "city"],"query": {"match_all": {}}
}通过 _source 中的 includes 属性
GET twitter/_search
{"_source": {"includes": ["user", "city"]},"query": {"match_all": {}}
}fields 来指定返回的字段(这样做比_source更加高效) :
GET twitter/_search
{"_source": false,"fields": ["user", "city"],"query": {"match_all": {}}
}
fields 可使用通配符匹配字段 : “fields”: [“user*”, “city*”],
通过设置 _source 为 false,这样不返回任何的 _source 信息:
GET twitter/_search
{"_source": false,"query": {"match": {"user": "张三"}}
}
例 :
_source 设置为[] 或 {} 那么就是显示所有的字段
Highlighting 突出显示字段
GET twitter/_search
{"query": {"match": {"address": "北京"}},"highlight": {"fields": {"address": {}}}
}
会在返回结果_source 中增加一个"highlight"字段显示匹配的字段 如匹配’北京’,默认用 em 来进行高亮显示的,这个格式可以在 HTML 中进行高亮显示。
"hits" : [{"_index" : "twitter","_type" : "_doc","_id" : "1","_score" : 0.5253035,"_source" : {"user" : "双榆树-张三","message" : "今儿天气不错啊,出去转转去","uid" : 2,"age" : 20,"city" : "北京","province" : "北京","country" : "中国","address" : "中国北京市海淀区","location" : {"lat" : "39.970718","lon" : "116.325747"}},"highlight" : {"address" : ["中国<em>北</em><em>京</em>市海淀区"]}}...
可通过pre_tags和post_tags替换默认的 tag
GET twitter/_search
{"query": {"match": {"address": "北京"}},"highlight": {"pre_tags": ["<my_tag>"],"post_tags": ["</my_tag>"], "fields": {"address": {}}}
}
返回结果
"highlight" : {"address" : ["中国<my_tag>北</my_tag><my_tag>京</my_tag>市海淀区"]}
Count 统计文档内容数量
GET twitter/_count : 统计文档内容数量
满足条件的文档的数量 :
GET twitter/_count
{"query": {"match": {"city": "北京"}}
}
Mapping 查询文档数据类型
GET twitter/_mapping
我们不能为已经建立好的 index 动态修改 mapping。这是因为一旦修改,那么之前建立的索引就变成不能搜索的了
Profile 调试工具
会显示查询出结果的详细计算过程
例 :
GET twitter/_search
{"profile": "true", "query": {"match": {"city": "北京"}}
}
总结
对 ‘Elastic 中国社区官方博客’ 查询篇进行简单归纳总结,方便日后快速查询。
Elasticsearch _search查询参数及过滤相关推荐
- Elasticsearch查询参数介绍
因为项目需要调用api查询elasticsearch拿数据,这边记录一下项目中常用的一些查询参数 es的查询接口为: GET /索引名/_search python调用data为需要传入的参数impo ...
- 【elasticsearch】查询语句的分词过滤和不分词过滤
文章目录 [elasticsearch]查询语句的分词过滤和不分词过滤 一.分词查询 二.全词查询 [elasticsearch]查询语句的分词过滤和不分词过滤 在对 elasticsearch 进行 ...
- Solr4:查询参数fq的用法(对结果进行过滤;两组关键词组合查询)
Solr查询参数文档可以参考: http://wiki.apache.org/solr/CommonQueryParameters#head-6522ef80f22d0e50d2f12ec487758 ...
- Elasticsearch高级查询2:ES 高级查询
一.高级查询 1.简介 Elasticsearch基于JSON提供完整的查询DSL(Domain Specific Language:领域特定语言)来定义查询. 基本语法: GET /索引名/类型名/ ...
- elasticsearch6.6文档翻译-查询语句-查询上下文和过滤上下文
查询上下文和过滤上下文 {#query-filter-context} 查询子句的行为取决于它是在查询上下文中使用,还是在过滤上下文中使用: 查询上下文 一个查询子句在查询上下文中被使用时,能够解答这 ...
- Elasticsearch - DSL 查询语句
文章目录 1.DSL查询文档 1.1.DSL查询分类 1.2.全文检索查询 1.2.1.使用场景 1.2.2.基本语法 1.2.3.总结 1.3.精准查询 1.3.1.term查询 1.3.2.ran ...
- Elasticsearch DSL 查询详解
在 Elasticsearch 中,提供了功能十分丰富.多种表现形式的查询语言-- DSL 查询. DSL 查询使用 JSON 格式的请求体与 Elasticsearch 交互,可以实现各种各样的查询 ...
- Elasticsearch 分页查询聚合分析
分页查询 关于 Elasticsearch 分页查询,这几个问题经常被问到 问题1:想请问下,一次性获取索引上的某个字段的所有值(100 万左右),除了把 max_result_window 调大 , ...
- elasticsearch 分页查询实现方案——Top K+归并排序
elasticsearch 分页查询实现方案 1. from+size 实现分页 from表示从第几行开始,size表示查询多少条文档.from默认为0,size默认为10, 注意:size的大小不能 ...
最新文章
- Linux下安装Oracle11g服务器(centos7下)
- GMQ稳定币可降低交易成本,构建智能化支付生态体系
- 技术社区,你真的会混吗?
- 用Python学分析 - 单因素方差分析
- 编写一个算法frequency,统计在一个输入字符串中各个不同字符出现的频度。用适当的测试数据来验证这个算法。
- Android 开发中常用小技巧
- @bean注解和@component注解的区别_通过源码查看 @Component,@Service 等注解是如何被解析的...
- 回文数(信息学奥赛一本通-T1309)
- 我发现了25个影响力达20多年的 Windows 0day,微软刚修完11个
- 关于js中window.location.href、location.href、parent.location.href、top.location.href的用法...
- Create Table Like Mapping: 基于类型推断的建表方法
- WIFI和WLAN的区别是什么
- deb软件包管理(二)
- github上 开源项目_在GitHub上组织开源项目的工作流程的3个技巧
- 使用docker安装ubuntu镜像
- 【排序】快排(霍尔快排)
- Android高德地图自定义地图指南针
- 数学笔记9——牛顿迭代法
- windows server 2012 R2 打印机安装
- Shopify Liquid 日期
热门文章
- MySQL入门学习之——MySQL Cluster初体验
- 小丸子学MongoDB系列之——部署MongoDB副本集
- 轴心时代的三大东方圣人老子、孔子和释迦牟尼
- 搜索引擎(大数据检索)论述[elasticsearch原理相关]
- 渣渣渣变渣渣系列(8)
- GO 语言核心编程-全文版
- java压缩文件,在线下载文件并压缩
- maven打包报错Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:2.5.2.RELEASE:repa
- Win32游戏制作之---Bizzard
- QML之Canvas实现标尺(刻度尺)方案