笔记源自 : 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 HappyBirthday 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查询参数及过滤相关推荐

  1. Elasticsearch查询参数介绍

    因为项目需要调用api查询elasticsearch拿数据,这边记录一下项目中常用的一些查询参数 es的查询接口为: GET /索引名/_search python调用data为需要传入的参数impo ...

  2. 【elasticsearch】查询语句的分词过滤和不分词过滤

    文章目录 [elasticsearch]查询语句的分词过滤和不分词过滤 一.分词查询 二.全词查询 [elasticsearch]查询语句的分词过滤和不分词过滤 在对 elasticsearch 进行 ...

  3. Solr4:查询参数fq的用法(对结果进行过滤;两组关键词组合查询)

    Solr查询参数文档可以参考: http://wiki.apache.org/solr/CommonQueryParameters#head-6522ef80f22d0e50d2f12ec487758 ...

  4. Elasticsearch高级查询2:ES 高级查询

    一.高级查询 1.简介 Elasticsearch基于JSON提供完整的查询DSL(Domain Specific Language:领域特定语言)来定义查询. 基本语法: GET /索引名/类型名/ ...

  5. elasticsearch6.6文档翻译-查询语句-查询上下文和过滤上下文

    查询上下文和过滤上下文 {#query-filter-context} 查询子句的行为取决于它是在查询上下文中使用,还是在过滤上下文中使用: 查询上下文 一个查询子句在查询上下文中被使用时,能够解答这 ...

  6. 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 ...

  7. Elasticsearch DSL 查询详解

    在 Elasticsearch 中,提供了功能十分丰富.多种表现形式的查询语言-- DSL 查询. DSL 查询使用 JSON 格式的请求体与 Elasticsearch 交互,可以实现各种各样的查询 ...

  8. Elasticsearch 分页查询聚合分析

    分页查询 关于 Elasticsearch 分页查询,这几个问题经常被问到 问题1:想请问下,一次性获取索引上的某个字段的所有值(100 万左右),除了把 max_result_window 调大 , ...

  9. elasticsearch 分页查询实现方案——Top K+归并排序

    elasticsearch 分页查询实现方案 1. from+size 实现分页 from表示从第几行开始,size表示查询多少条文档.from默认为0,size默认为10, 注意:size的大小不能 ...

最新文章

  1. Linux下安装Oracle11g服务器(centos7下)
  2. GMQ稳定币可降低交易成本,构建智能化支付生态体系
  3. 技术社区,你真的会混吗?
  4. 用Python学分析 - 单因素方差分析
  5. 编写一个算法frequency,统计在一个输入字符串中各个不同字符出现的频度。用适当的测试数据来验证这个算法。
  6. Android 开发中常用小技巧
  7. @bean注解和@component注解的区别_通过源码查看 @Component,@Service 等注解是如何被解析的...
  8. 回文数(信息学奥赛一本通-T1309)
  9. 我发现了25个影响力达20多年的 Windows 0day,微软刚修完11个
  10. 关于js中window.location.href、location.href、parent.location.href、top.location.href的用法...
  11. Create Table Like Mapping: 基于类型推断的建表方法
  12. WIFI和WLAN的区别是什么
  13. deb软件包管理(二)
  14. github上 开源项目_在GitHub上组织开源项目的工作流程的3个技巧
  15. 使用docker安装ubuntu镜像
  16. 【排序】快排(霍尔快排)
  17. Android高德地图自定义地图指南针
  18. 数学笔记9——牛顿迭代法
  19. windows server 2012 R2 打印机安装
  20. Shopify Liquid 日期

热门文章

  1. MySQL入门学习之——MySQL Cluster初体验
  2. 小丸子学MongoDB系列之——部署MongoDB副本集
  3. 轴心时代的三大东方圣人老子、孔子和释迦牟尼
  4. 搜索引擎(大数据检索)论述[elasticsearch原理相关]
  5. 渣渣渣变渣渣系列(8)
  6. GO 语言核心编程-全文版
  7. java压缩文件,在线下载文件并压缩
  8. maven打包报错Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:2.5.2.RELEASE:repa
  9. Win32游戏制作之---Bizzard
  10. QML之Canvas实现标尺(刻度尺)方案