json - 使用 elasticsearch 查询完整的 JSON 对象
问题描述
我想查询完整的 Json。
我将 Json 对象保存在不同的文档中。
_id: 1,
my_json: {
"field1": "1",
"field2": "2",
"field3": "3",
"field4": "4"
}
_id: 2,
my_json: {
"field1": "11",
"field2": "22",
"field3": "33",
"field4": "44"
}
在我的查询中,我想匹配完整的组合而不是单个字段。所以我尝试了下面的查询,但它返回空响应。
{
"query": {
"bool": {
"must": [
{
"terms": {
"my_json": [
{
"field1": "11",
"field2": "22",
"field3": "33",
"field4": "44"
},
{
"field1": "1",
"field2": "2",
"field3": "3",
"field4": "4"
}
]
}
}
]
}
}
}
我需要使用越来越多的像上面这样的 Json 对象。所以我不能使用常规查询。因此我试图匹配完整的 JSON 对象。
解决方案
如果您想匹配 JSON 对象的所有属性,您可以这样做,但在 JSON 中的每个字段使用一个术语查询,即 JSON 的每个字段必须匹配
{
"query": {
"bool": {
"must": [
{
"term": {
"my_json.field1": "11"
}
},
{
"term": {
"my_json.field2": "22"
}
},
{
"term": {
"my_json.field3": "33"
}
},
{
"term": {
"my_json.field4": "44"
}
}
]
}
}
}
推荐阅读
- apache - JSP 在 apache tomcat 服务器中运行时显示原始代码
- javascript - 过滤用户输入的前两个字符,并从外部数据库中检索以过滤输入开头的任何匹配词
- vba - 将月份名称(法语)转换为月份编号
- selenium - 如何在 Chrome 浏览器上使用 selenium 处理登录身份验证弹出窗口
- mongodb - $lookup 后的 $group 花费的时间太长
- tensorflow - 如何在谷歌 colab 上将数据从 CPU 传输到 GPU 运行时?
- c++ - 使用 target_link_libraries 时避免自动添加“lib”前缀
- c++ - 从字符串中分离子字符串
- netbeans - NetBeans 说上传成功,但远程文件没有改变
- office-js - Excel Web 加载项读取自定义 XML 属性