如何从 json 映射到 ElasticSearch 中的 select 特定键
How to select particular key from json map in ElasticSearch
我在 ES 中有 json 文档,如下所示:
{
"indicators":
{
"i1": { ... }
},
{
"i2": { ... }
}
}
indicators
是一个从字符串键到对象的映射。我需要 select 包含特定密钥的文档。
正在尝试从 Kibana 中这样查询 UI:
indicators.i2 :*
但这行不通。在这种情况下,正确的查询是什么?
据我所知,您需要获取那些包含特定字段的文档(在您的情况下,假设该字段是 indicators.i1
)
要达到要求的效果,需要使用exists query.
添加带有索引数据和搜索查询的工作示例
索引数据:
POST tidx/_doc/1
{
"indicators": [
{
"i1": {
"city": "indore"
}
},
{
"i2": {
"city": "bangalore"
}
}
]
}
POST tidx/_doc/2
{
"indicators": [
{
"i2": {
"city": "bangalore"
}
}
]
}
搜索查询:
POST tidx/_search
{
"query": {
"exists": {
"field": "indicators.i1"
}
}
}
搜索响应:
"hits" : [
{
"_index" : "tidx",
"_type" : "_doc",
"_id" : "1",
"_score" : 1.0,
"_source" : {
"indicators" : [
{
"i1" : {
"city" : "indore"
}
},
{
"i2" : {
"city" : "bangalore"
}
}
]
}
}
]
我在 ES 中有 json 文档,如下所示:
{
"indicators":
{
"i1": { ... }
},
{
"i2": { ... }
}
}
indicators
是一个从字符串键到对象的映射。我需要 select 包含特定密钥的文档。
正在尝试从 Kibana 中这样查询 UI:
indicators.i2 :*
但这行不通。在这种情况下,正确的查询是什么?
据我所知,您需要获取那些包含特定字段的文档(在您的情况下,假设该字段是 indicators.i1
)
要达到要求的效果,需要使用exists query.
添加带有索引数据和搜索查询的工作示例
索引数据:
POST tidx/_doc/1
{
"indicators": [
{
"i1": {
"city": "indore"
}
},
{
"i2": {
"city": "bangalore"
}
}
]
}
POST tidx/_doc/2
{
"indicators": [
{
"i2": {
"city": "bangalore"
}
}
]
}
搜索查询:
POST tidx/_search
{
"query": {
"exists": {
"field": "indicators.i1"
}
}
}
搜索响应:
"hits" : [
{
"_index" : "tidx",
"_type" : "_doc",
"_id" : "1",
"_score" : 1.0,
"_source" : {
"indicators" : [
{
"i1" : {
"city" : "indore"
}
},
{
"i2" : {
"city" : "bangalore"
}
}
]
}
}
]