1.查询为空的字段

我们查询某个字段为空的数据时,在mysql中:

select eid,ent_name from ent_search where enttype_code is NULL;

在elasticsearch中,我们使用的api为exists,这个查询是:查询这个字段为空的或者没有这个字段的:

GET ent_search/_search
{
  "_source": ["eid","ent_name"], 
    "query": {
        "bool": {
            "must_not": {
                "exists": {
                    "field": "enttype_code"
                }
            }
        }
    }
}

Java代码实现:

queryBuilder.mustNot(QueryBuilders.existsQuery("enttype_code"));

2.查询某个不为空的字段

我们查询某个字段不为空的数据时,在mysql中:

select eid,ent_name from ent_search where enttype_code is NOT NULL;

在elasticsearch中,我们使用的api为exists,这个查询是:

GET ent_search/_search
{
  "_source": ["eid","ent_name","enttype_code"], 
  "query": {
    "constant_score": {
      "filter": {
        "exists": {
          "field": "enttype_code"
        }
      }
    }
  }
}

Java代码实现:

queryBuilder.must(QueryBuilders.existsQuery("enttype_code"));

注意:在es大数据量级(30亿)下,影响查询性能

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐