在索引别名的术语查找过滤器上指定路由

时间:2014-04-25 16:17:52

标签: filter elasticsearch logstash kibana

我正在使用 Logstash ElasticSearch Kibana 来允许多个用户登录并查看他们转发的日志数据。我为每个用户创建了索引别名。这些限制了他们的结果只包含他们自己的数据。

我想将用户分配到组,并允许用户查看其组中计算机的数据。我在组和用户之间创建了父子关系,并在别名上创建了术语查找过滤器。

我的问题是,当我尝试应用别名时收到RoutingMissingException

有没有办法为术语查找过滤器指定路由?如何在父文档中查找术语?

我在下面发布了地图和别名,但是link可以获得完整的要点。

curl -XPUT 'http://localhost:9200/accesscontrol/' -d '{
    "mappings" : {
        "group" : {
            "properties" : {
                "name" : { "type" : "string" },
                "hosts" : { "type" : "string" }
            }
        },
        "user" : {
            "_parent" : { "type" : "group" },
            "_routing" : { "required" : true, "path" : "group_id" },
            "properties" : {
                "name" : { "type" : "string" },
                "group_id" : { "type" : "string" }
            }
        }
    }
}'

# Create the logstash alias for cvializ
curl -XPOST 'http://localhost:9200/_aliases' -d '
{
    "actions" : [
        { "remove" : { "index" : "logstash-2014.04.25", "alias" : "cvializ-logstash-2014.04.25" } },
        { 
            "add" : { 
                "index" : "logstash-2014.04.25",
                "alias" : "cvializ-logstash-2014.04.25",
                "routing" : "intern",
                "filter": {
                    "terms" : {
                        "host" : {
                            "index" : "accesscontrol",
                            "type" : "user",
                            "id" : "cvializ",
                            "path" : "group.hosts"
                        },
                        "_cache_key" : "cvializ_hosts"
                    }
                }
            }
        }
    ]
}'

1 个答案:

答案 0 :(得分:0)

在尝试找到此错误的解决方法时,我submitted a bug到ElasticSearch团队,并收到他们的答复。这是ElasticSearch中的一个错误,在动态映射之前应用了过滤器,导致一些错误的输出。我在下面列出了他们的解决方法:

PUT /accesscontrol/group/admin
{
    "name" : "admin",
    "hosts" : ["computer1","computer2","computer3"]
}


PUT /_template/admin_group
{
    "template" : "logstash-*",
    "aliases" : {        
        "template-admin-{index}" : {
            "filter" : {
                "terms" : {
                    "host" : {
                        "index" : "accesscontrol",
                        "type" : "group",
                        "id" : "admin",
                        "path" : "hosts"
                    }
                }
            }
        }
    },
    "mappings": {
      "example" : {
        "properties": {
          "host" : {
            "type" : "string"
          }  
        } 
      }
    }
}


POST /logstash-2014.05.09/example/1
{
    "message":"my sample data",
    "@version":"1",
    "@timestamp":"2014-05-09T16:25:45.613Z",
    "type":"example",
    "host":"computer1"
}


GET /template-admin-logstash-2014.05.09/_search