如何解决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 举报,一经查实,本站将立刻删除。