Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Elasticsearch多字段通配符搜索_Java_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Filter_Wildcard_Elk - Fatal编程技术网 elasticsearch,filter,wildcard,elk,Java,elasticsearch,Filter,Wildcard,Elk" /> elasticsearch,filter,wildcard,elk,Java,elasticsearch,Filter,Wildcard,Elk" />

Java Elasticsearch多字段通配符搜索

Java Elasticsearch多字段通配符搜索,java,elasticsearch,filter,wildcard,elk,Java,elasticsearch,Filter,Wildcard,Elk,我正在构建一个过滤器函数,我想要的是一个通配符过滤器。如果值为“roj”,则应显示包含“roj”的任何字段中的所有记录 如何实现这一点 我的问题是 { "query": { "bool": { "must": [ { "exists": { "field": "Project_error" } }, { "wildcard": {

我正在构建一个过滤器函数,我想要的是一个通配符过滤器。如果值为“roj”,则应显示包含“roj”的任何字段中的所有记录

如何实现这一点

我的问题是

{
  "query": {
    "bool": {
      "must": [
        {
          "exists": {
            "field": "Project_error"
          }
        },
        {
          "wildcard": {
            "api_name": {
              "wildcard": "*roj*"
            }
          }
        },
        {
          "wildcard": {
            "error_Code": {
              "wildcard": "*roj*"
            }
          }
        }
      ]
    }
  }
}
Java代码

BoolQueryBuilder bqb = new BoolQueryBuilder();
bqb.must(QueryBuilders.existsQuery("Project_error"))

if(!filter.isEmpty()) {
   bqb.filter(QueryBuilders.wildcardQuery(fields[0],"*"+filter+"*"));
   bqb.must(QueryBuilders.wildcardQuery(fields[1],"*"+filter+"*"));
   ...
}

searchSourceBuilder.query(bqb);

此脚本仅在两个字段都包含“roj”时显示数据,这是不正确的。

使用下面的查询可以获得结果

GET <index_name>/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "query_string": {
            "query": "*roj*",
            "fields":["field_1", "field_2"]
          }
        }
      ]
    }
  }
}
GET/\u搜索
{
“查询”:{
“布尔”:{
“必须”:[
{
“查询字符串”:{
“查询”:“*roj*”,
“字段”:[“字段1”、“字段2”]
}
}
]
}
}
}

如果要在所有字段中应用查询条件,请删除上述查询中的字段属性

使用should(或)代替must(AND)。我应该听你的<代码>和操作员工作!谢谢
query\u string
它只搜索每个前缀,而不是字符串的整个前缀/短语。