elasticsearch 在ElasticSearch中,如何检查某个字段是否存在,该字段是否等于某个值,或者该字段是否不';不存在?
我想在elasticsearch中查找所有文档,其中我的“更新”字段存在且小于某个值,或者该字段在文档中根本不存在。我可以看到,使用bool查询,必须和必须不能被利用,但我如何获得我试图用它们实现的确切场景elasticsearch 在ElasticSearch中,如何检查某个字段是否存在,该字段是否等于某个值,或者该字段是否不';不存在?,elasticsearch,kibana,elasticsearch,Kibana,我想在elasticsearch中查找所有文档,其中我的“更新”字段存在且小于某个值,或者该字段在文档中根本不存在。我可以看到,使用bool查询,必须和必须不能被利用,但我如何获得我试图用它们实现的确切场景 谢谢大家! 假设updated是date类型的字段,则查询如下所示: GET test/_search { "query": { "bool": { "should": [ { "bool": { "must
谢谢大家! 假设
updated
是date
类型的字段,则查询如下所示:
GET test/_search
{
"query": {
"bool": {
"should": [
{
"bool": {
"must": [
{
"exists": {
"field": "updated"
}
},
{
"range": {
"updated": {
"lte": "2019-06-10"
}
}
}
]
}
},
{
"bool": {
"must_not": [
{
"exists": {
"field": "updated"
}
}
]
}
}
]
}
}
}
以上说明:
让,
- 字段
应存在==>已更新
A
- 字段
应小于updated
==>X
B
- 字段
不应存在==>updated
C
(A和B)或C
让(A和B)
成为D
现在就弹性而言,它变成:
should
{
D,
C
}
或
在上面的查询中,仅使用就足够了,并且不需要检查是否存在更新的字段以及范围
因此,查询可以重写为(B或C):
太棒了,你真漂亮。作为ES的初学者,它对我帮助很大。谢谢
should
{
must
{
A,
B
},
C
}
GET test/_search
{
"query": {
"bool": {
"should": [
{
"range": {
"updated": {
"lte": "2019-06-10"
}
}
},
{
"bool": {
"must_not": [
{
"exists": {
"field": "updated"
}
}
]
}
}
]
}
}
}