java - 如何使用 Java Resthighlevel 客户端生成相同的弹性搜索查询?
问题描述
我正在尝试使用类似于此的 Elasticsearch 的 Java RestHighLevelClient 生成查询:
GET /field_search/_search
{
"query": {
"bool": {
"must": [
{
"match": {
"ENTRY_ID": "ttttt"
}
},
{
"match": {
"MODULE_ID": "xxxxx"
}
},
{
"match": {
"COMPANY_ID": "22244"
}
},
{
"match": {
"DELETED": false
}
}
]
}
}
}
这是我用来生成它的代码
BoolQueryBuilder boolQueryBuilder1 = new BoolQueryBuilder();
boolQueryBuilder1.must().add(QueryBuilders.matchQuery("MODULE_ID", moduleId));
boolQueryBuilder1.must().add(QueryBuilders.matchQuery("COMPANY_ID", companyId));
........
我已经跳过了它的一部分以保持它的小。但我使用 BoolQueryBuilder ,它生成的查询是这样的:
{
"query": {
"bool" : {
"must" : [
{
"match" : {
"MODULE_ID" : {
"query" : "xxxxx",
"operator" : "OR",
"prefix_length" : 0,
"max_expansions" : 50,
"fuzzy_transpositions" : false,
"lenient" : false,
"zero_terms_query" : "NONE",
"auto_generate_synonyms_phrase_query" : false,
"boost" : 1.0
}
}
},
{
"match" : {
"COMPANY_ID" : {
"query" : "22244",
"operator" : "OR",
"prefix_length" : 0,
"max_expansions" : 50,
"fuzzy_transpositions" : false,
"lenient" : false,
"zero_terms_query" : "NONE",
"auto_generate_synonyms_phrase_query" : false,
"boost" : 1.0
}
}
},
{
"match" : {
"DELETED" : {
"query" : false,
"operator" : "OR",
"prefix_length" : 0,
"max_expansions" : 50,
"fuzzy_transpositions" : false,
"lenient" : false,
"zero_terms_query" : "NONE",
"auto_generate_synonyms_phrase_query" : false,
"boost" : 1.0
}
}
},
{
"match" : {
"ENTRY_ID" : {
"query" : ttttt,
"operator" : "OR",
"prefix_length" : 0,
"max_expansions" : 50,
"fuzzy_transpositions" : false,
"lenient" : false,
"zero_terms_query" : "NONE",
"auto_generate_synonyms_phrase_query" : false,
"boost" : 1.0
}
}
}
],
"adjust_pure_negative" : true,
"boost" : 1.0
}
}
}
它在查询中添加了额外的东西。使用上面的普通查询,我的结果正确返回,但是使用 java 生成的查询,我的结果没有,所以我如何使用 Java 客户端构建相同的查询?
解决方案
推荐阅读
- python - 在 python 类中使用 sqlalchemy 1.4/2.0 包装原子查询执行的最有效但最强大的方法是什么?
- python - 如何在熊猫中使用fillna函数?
- javascript - 将 ng-repeat 变量传递给 javascript 函数
- javascript - 使用 React 的 Material UI 暗模式和亮模式
- javascript - React:如何将特定数据传递/填充到组件中?
- reactjs - React-Jest:axios.get.mockRejectedValue 不尊重异步等待
- javascript - 如何为嵌套数组中的元素生成索引链?
- three.js - 与相机平行的边界框
- distribution - 使用 Scilab 进行帕累托分布参数估计,为什么我会得到这么大的值?
- docker - Kubernetes 中 Minio 支持的 Docker Registry 使用 Minio 的自签名证书 - x509 错误