如何在Elasticsearch中搜索长度为0的字符串?

时间:2017-04-21 14:01:51

标签: java elasticsearch

我的文档有一个值为“”的关键字,我如何通过java Elasticsearch搜索它?

没有像代码那样的效果:

query.must(QueryBuilders.boolQuery()
            .should(QueryBuilders.regexpQuery("paymentRetCode", ""))
            );

1 个答案:

答案 0 :(得分:1)

您需要使用script查询来检查字符串的长度是否为0:

Script script = new Script(ScriptType.INLINE, "myscript", "doc.paymentRetCode.value.length() == 0", new HashMap())
query.must(QueryBuilders.boolQuery()
    .should(QueryBuilders.scriptQuery(script))))
);

脚本查询并不理想,但如果需要检测空字符串的文档,则应设置null而不是空字符串,在这种情况下,您将能够使用否定的{{1} } query:

exists