Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.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中基于QueryBuilders的查询,用于跨多个字段搜索混合了特殊字符(John one)的文本?_Java_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch - Fatal编程技术网 elasticsearch,Java,elasticsearch" /> elasticsearch,Java,elasticsearch" />

Java elasticsearch中基于QueryBuilders的查询,用于跨多个字段搜索混合了特殊字符(John one)的文本?

Java elasticsearch中基于QueryBuilders的查询,用于跨多个字段搜索混合了特殊字符(John one)的文本?,java,elasticsearch,Java,elasticsearch,我在应用程序中使用此查询从数据库集合的所有字段中获取所有不带特殊字符的匹配记录。在这里,我将q值作为运行时搜索文本(John)。现在的问题是,当我搜索带有特殊字符的文本(John One)时,它返回0 QueryBuilder queryBuilderForUserSearch = QueryBuilders.boolQuery().must(QueryBuilders.fieldQuery("active", Boolean.TRUE)) .must(QueryBuilders.fi

我在应用程序中使用此查询从数据库集合的所有字段中获取所有不带特殊字符的匹配记录。在这里,我将
q
值作为运行时搜索文本
(John)
。现在的问题是,当我搜索带有特殊字符的文本
(John One)
时,它返回
0

QueryBuilder queryBuilderForUserSearch =
QueryBuilders.boolQuery().must(QueryBuilders.fieldQuery("active", Boolean.TRUE))
     .must(QueryBuilders.fieldQuery("_all", "*" + q + "*"));

这里
q
是我传递的文本。当我只传递文本(如
John
)而不传递特殊字符(如
johnone
)时,它工作正常。但是我也应该获取所有带有特殊字符的记录。

问题是,当遇到特殊字符时,elasticsearch会在索引时标记数据

尝试将字段标记为“未分析”。这将在索引中“按原样”存储字段值,而不标记它。这将导致一个副作用,即没有通配符的常规术语查询将无法按预期工作

相关映射片段

{
   "field1":{
        "type":"string",
        "index":"not_analyzed",
        "store":true
    },
    "field2":{
        "type":"string",
        "index":"not_analyzed",
        "store":true
    }
}

@谢谢你的编辑。