elasticsearch 基于1个术语值查询嵌套JSON,elasticsearch,kibana,elasticsearch,Kibana" /> elasticsearch 基于1个术语值查询嵌套JSON,elasticsearch,kibana,elasticsearch,Kibana" />

elasticsearch 基于1个术语值查询嵌套JSON

elasticsearch 基于1个术语值查询嵌套JSON,elasticsearch,kibana,elasticsearch,Kibana,我已经索引了JSON,格式如下 JSON: {"work":[{"organization":"abc", end:"present"},{"organization":"edf", end:"old"}]} {"work":[{"organization":"edf", end:"present"},{"organization":"abc", end:"old"}]} 我想查询组织为“abc”且结束为“存在”的记录 但下面的查询不起作用 work.0.organization: "abc

我已经索引了JSON,格式如下

JSON:

{"work":[{"organization":"abc", end:"present"},{"organization":"edf", end:"old"}]}
{"work":[{"organization":"edf", end:"present"},{"organization":"abc", end:"old"}]}
我想查询组织为“abc”且结束为“存在”的记录

但下面的查询不起作用

 work.0.organization: "abc" AND work.0.end:"present"
没有匹配的记录

如果我给出如下的问题

 work.organization: "abc" AND work.end:"present"
两个记录都匹配。而只有第一张唱片是我想要的

匹配的记录应仅限于以下内容

{"work":[{"organization":"abc", end:"present"},{"organization":"edf", end:"old"}]}
你必须使用。使用以下映射,第一个映射在elastic中作为嵌套类型工作

PUT index_name_3
{
  "mappings": {
    "document_type" : {
      "properties": {
        "work" : {
          "type": "nested",
          "properties": {
            "organization" : {
              "type" : "text"
            },
            "end" : {
              "type" : "text"
            }
          }
        }
      }
    }
  }
}
使用以下查询进行嵌套筛选器匹配和


如果不更改映射,是否无法进行查询?否您必须更改映射才能使用上述查询。无论如何,工作类型是嵌套的,应该映射到嵌套否它实际上映射为
文本
。谢谢你的回答。我将看看是否有任何方法可以不改变映射,如果没有,我将标记您的作为答案。给我一天时间
{
    "query": {
        "nested": {
            "path": "work",
            "inner_hits": {},
            "query": {
                "bool": {
                    "must": [{
                            "term": {
                                "work.organization": {
                                    "value": "abc"
                                }
                            }
                        },
                        {
                            "term": {
                                "work.end": {
                                    "value": "present"
                                }
                            }
                        }
                    ]
                }
            }
        }
    }
}