elasticsearch 查询基本结构 数组查询 对象查询 字段是否存在 是否为空
基本结构{"query":{"bool":{"must":{},"must_not":{},"filter":{},"should":{},"should_not":{}}}}数组查询{"query":{"nested":{"path":"firm_app"
·
基本结构
{
"query":{
"bool":{
"must":{
},
"must_not":{},
"filter":{},
"should":{},
"should_not":{}
}
}
}
数组查询
{
"query":{
"nested":{
"path":"firm_app",
"query":{
"match":{
"firm_app.app":"noticias" }
}
}
}
}
实战例子:
/index/_search POST
{
"query": {
"nested": {
"path": "commentList",
"query": {
"range": {
"commentList.updatedTime": {
"gte": 1626167635000
},
"commentList.notify": {
"gte": 1,
"lte": 1
}
}
}
}
},
"sort": [
{
"commentList.updatedAt": {
"order": "desc",
"mode": "max",
"nested_path": "commentList",
"nested_filter": {
"range": {
"commentList.updatedTime": {
"gte": 1626167635000
},
"commentList.notify": {
"gte": 1,
"lte": 1
}
}
}
}
}
]
}
数组排序时,筛选条件,sort里面也得加,因为虽然外层通过嵌套数组的方式做了筛选,但是返回的文档,是一个完整的文档,包含全部的嵌套文档,所以需要在sort排序时,也要作下筛选才行。
注意:数组筛选和基本筛选,不能同时查询。
对象查询
{
"query":{
"term":{
"language.v4.keyword": "Spanish"
}
}
}
存在field、判断写入字段为空
{
"query":{
"exists": {
"field": "title"
}
}
}
过滤
{
"query":{
"range": {
"discovery_time": {
"gt": "2018-03-16",
"lt": "2018-03-23"
}
}
}
}
match
和term
的区别:match查询会分词,term查询不会分词。
实战查询
{
"query": {
"bool": {
"must": [
{
"range": {
"createdAt": {
"gte": "1624982400000"
}
}
}
]
}
},
"from": 0,
"size": 20,
"sort": [
{
"finalReplyTime": {
"order": "desc"
}
}
]
}
参考地址:
https://blog.csdn.net/yanxiaobo1991/article/details/79665590
更多推荐
已为社区贡献31条内容
所有评论(0)