java - 如何处理连字符 Elasticsearch QueryBuilder Java?
问题描述
我正在尝试对我为用户拥有的数据表进行后端过滤。UI 中提供了列过滤,我需要能够通过子字符串查询 Elasticsearch 数据库中的字段名称。
QueryBuilders.wildcardQuery(field.get(i),String.format("*%s*",filter.get(i).toLowerCase())));
这是我尝试过的查询,也尝试过添加 .operator(Operator.AND),但它说 QueryBuilder 没有运算符功能。
目前,此查询通过对数据库的 POST 请求进行,但我需要能够通过 Java API 执行此操作。
{
"query":{
"simple_query_string" : {
"fields" : ["ideaId"],
"query" : "*hello-world*",
"analyze_wildcard":true,
"default_operator":"AND"
}
}
}
我也尝试用 AND 替换连字符,但没有返回正确的记录。
{
"query":{
"simple_query_string" : {
"fields" : ["ideaId"],
"query" : "*hello AND world*",
"analyze_wildcard":true
}
}
}
解决方案
对于任何想知道您必须使用 simpleQueryStringQuery 的人:
QueryBuilders.simpleQueryStringQuery(String.format("*%s*", filter.get(i).toLowerCase()))
.analyzeWildcard(true)
.field(field.get(i))
.defaultOperator(Operator.AND))
推荐阅读
- powershell - 通过 PowerShell 连接到 SQL
- twilio - 如何使用 twilio 从网站拨打电话号码
- flask - 无法在 Flask-Security 中使用忘记密码
- django - selenium.common.exceptions.InvalidCookieDomainException:消息:使用 Selenium 在 Django 中执行测试时 cookie 域无效
- java - 接收来自渲染器的消息超时:在使用 ChromeDriver 和 Chrome 通过 Selenium 和 Java 在窗口之间切换时出现 300.000 错误
- c# - PCF中配置服务器的多个配置文件
- typescript - SonarQube:TypeScript baseUrl 和相对路径配置 => 问题“依赖关系应该是明确的”(打字稿:S4328)
- r - UnicodeDecodeError:“utf-8”编解码器无法解码位置 125 中的字节 0xf6:R 中带有网状结构的无效起始字节
- android - 如何在不打开其他应用程序的情况下发送短信?
- kubernetes - 使用 ansible 编辑 kubectl 命名空间标签