微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

FusionAuth ElasticSearch 用于有到期字段的用户

如何解决FusionAuth ElasticSearch 用于有到期字段的用户

我正在尝试列出设置了到期字段的所有用户

我想创建一个列表,其中包含所有已过期的列表,以及将其设置为何时过期的列表。

第 1 步实际上是获取所有用户。但是,我没有使用文档建议的查询进行管理:

POST 请求:

{
"search": {
    "numberOfResults": 50,"query": "{\"exists\": {\"field\": \"expiry\"}}","sortFields": [
        {
            "missing": "_first","name": "email","order": "asc"
        }
    ],"startRow": 0
}
}

这不会返回匹配项。我确信我至少有 3 个用户设置了到期字段。那些没有过期的字段甚至不存在。

我尝试了反向查询

"query": "{\"bool\": {\"must_not\": {\"exists\": {\"field\": \"user.id\"}}}}",

这让我获得了所有用户。 我还尝试了一个更简单的查询来验证它是否正在返回某些内容

expiry 是一个位于根上的元素,正如我们在 FusionAuth docs 上看到的那样:

{
  "user": {
    "birthDate": "1976-05-30","data": {
      "displayName": "Johnny Boy","favoriteColors": [
        "Red","Blue"
      ]
    },"email": "example@fusionauth.io","encryptionScheme": "salted-sha256","factor": 24000,"expiry": 1571786483322,"firstName": "John","fullName": "John Doe","imageUrl": "http://65.media.tumblr.com/tumblr_l7dbl0MHbU1qz50x3o1_500.png","lastName": "Doe","memberships": [{
...

谁能指出我遗漏了什么?这是查询的问题吗?

解决方法

expiry 未编入索引,因此您将无法对其进行搜索。我们应该更新文档以指示索引了哪些字段,但在那之前您可以查看 elasticsearch 索引来查看。

curl -XGET http://elasticsearchhost:port/fusionauth_user/_mapping

您可以提交功能请求以将到期添加到索引字段:https://github.com/fusionauth/fusionauth-issues/issues

这是关于同一主题的论坛帖子:https://fusionauth.io/community/forum/topic/1095/how-can-i-see-which-fields-are-indexed

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。