elasticsearch - 空字符串在弹性搜索中不匹配
问题描述
我有很多文件uID:
。要查询这些文件,我查询如下 -
'query': {
'term': {
'uID': ''
}
}
但它没有获取任何文件。为什么它不扔任何文件?有没有其他方法可以做到这一点?
解决方案
即使使用默认分析器,您也可以进行这种搜索:使用脚本过滤器,它速度较慢但可以处理空字符串:
curl -XPOST 'http://localhost:3000/_search' -d
{
"query": {
"filtered": {
"filter": {
"script": {
"script": "term. uID.length() == 0"
}
}
}
}
}
它将返回带有空字符串的文档作为 _content 没有特殊映射
正如@js_gandalf 所指出的,对于 ES>5.0,这是不推荐的。相反,您应该使用:query->bool->filter->script,如https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-bool-query.html
q=!(yourfield.keyword:"")
请参阅以下链接以获取更多信息。 https://www.elastic.co/guide/en/elasticsearch/reference/6.5/query-dsl-query-string-query.html#query-string-syntax
推荐阅读
- nginx - NGINX 为非子域返回 404,而 WWW 子域工作正常
- javascript - 如何使用 Google Scripts for Sheets 将 google 表格单元格数据添加到 html 电子邮件中?
- python - 为什么字典学习的 scikitlearn 实现比 cvxpy 更快?
- python - 减少 multiprocessing.Pool.starmap() 列表的内存大小
- c# - 等待所有异步下载完成
- linux - grep 字符串第一次出现前 n 行,一次与另一个字符串匹配
- c# - 当仅在 x 和 z 轴上拖放 3d 对象时,如何让它完全跟随鼠标?
- elasticsearch - 查询以提升作为查询的适当子集的记录或查询是记录的适当子集?
- php - 返回相对于站点根目录的路径,而不是服务器根目录
- c++ - 得到〜在标准输出上没有回应〜在hackerrank问题上