elasticsearch - Elasticsearch:不要忽略搜索值的类型
问题描述
我尝试使用这个简单的 JSON 来查询 Elasticsearch:{"query" : {"bool" : {"must" : [{"terms" : {"a" : [1, 2, "3"]}}]}}, "from" : 0, "size" : 1000}
我期望什么结果 - 所有条目,其中是a
整数1
或a
整数2
或字符串。a
"3"
我知道数据库中的一个字段不能有多种类型,问题是关于查询的。ES 版本是 7.x(默认设置)并且在文档中我的索引a
是一个整数。
但是我仍然得到整数a
在哪里的结果- 它必须被跳过,如何防止这种行为?我希望 Elasticsearch 尊重值类型并且只返回相同的类型。 3
那可能吗?
解决方案
当您将类型设置a
为整数时,3
将被强制转换为整数。
3a
相反,会抛出一个number_format_exception
.
鉴于您的所有a
值看起来都是数字的,您可以设置一个严格的映射,以防止字符串首先使用coerce
:
PUT myindex
{
"mappings": {
"properties": {
"a": {
"type": "integer",
"coerce": false
}
}
}
}
Integer value passed as String
当你尝试这个时会抛出异常
POST myindex/_doc
{
"a": "3"
}
推荐阅读
- javascript - 如何根据网站中的反应路由删除不需要的 CSS?
- applescript - 使用 AppleScript 移动整个文件夹
- python - 如何将 2D 列表 python 转换为一个列表并连接它们
- ios - Fabric 回答 SDK 在 [Fabric with:@[ [Answers class] ]] 上崩溃;
- java - 边界半径 css 不适用于飞碟
- javascript - 期望一个赋值或函数调用,而是在 React 中看到一个表达式 no-unused-expressions 错误
- mysql - 如何检查返回多于 1 行的子查询中是否存在值?
- signal-processing - 女声基频
- c# - 为什么我在 XAML 中声明的元素无法从 C# 代码访问?
- html - 如何将 ul、li、a 与 h1 和 h2 正确居中?