Sha*_*lam 2 java elasticsearch
嗨我对弹性搜索很新,这里我有一个弹性搜索,它返回基于关键字的数据库中的所有用户,但在这里我只需要获得活动状态为true的用户,但现在我得到所有用户列表.
我喜欢搜索引擎
{
"from" : 0,
"size" : 30,
"query" : {
"query_string" : {
"query" : "*jhon*",
"default_field" : "_all"
}
},
"sort" : [
{
"id" : {
"order" : "desc"
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
我正在使用像"*"+ jhon +"*"这样的查询,但是我需要得到名为Jhon的用户的结果,并且他的活动状态为真,所以我尝试了"*"+ jhon +"*"#activated~true"但是我我没有得到理想的结果不知道我哪里出错了?
最好为查询添加过滤器.过滤器更快,因为它们不涉及任何评分并且被缓存.您可以使用不同的过滤器,elasticsearch查询DSL非常灵活.过滤器的类型取决于索引数据的方式,这取决于您的数据.我将假设最简单的可能解决方案:术语过滤器.看看下面的例子.
{
"from" : 0,
"size" : 30,
"query" : {
"query_string" : {
"query" : "*jhon*",
"default_field" : "_all"
}
},
"filter" : {
"term" : {
"activated" : "true"
}
},
"sort" : [
{
"id" : {
"order" : "desc"
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
请注意,搜索时有不同的方法来应用过滤器.在我的示例中,我应用了顶级过滤器,该过滤器仅应用于搜索结果,而不应用于构面.如果您希望它也应用于构面,您应该查看过滤后的查询 ; 您可以将当前查询包装到新的筛选查询中,而不是添加筛选器,该查询也可以包含相同的术语筛选器.
| 归档时间: |
|
| 查看次数: |
5790 次 |
| 最近记录: |