我使用query_string进行搜索。搜索工作正常,但它使用小写字母和大写字母匹配所有记录。但我想与区分大小写完全匹配? 例如 : 搜索栏:“标题” 当前输出:
我只想先(标题)。如何解决这个问题。
我在java中的代码:
QueryBuilder qbString = null;
qbString = QueryBuilders.queryString( “标题”)字段( “FIELD_NAME”);
答案 0 :(得分:2)
您需要配置映射/文本处理,以便对标记进行索引而不会降低标记。
“标准” - 分析器小写(并删除停用词)。
以下是一个示例,说明如何配置分析器和映射以实现此目的:https://www.found.no/play/gist/7464654
答案 1 :(得分:0)
对于ElasticSearch上的版本5 +,没有分析的概念,也没有分析索引,它是由类型驱动的!
不推荐使用字符串数据类型,并将其替换为text和keyword,因此,如果您的数据类型为text,则其行为类似于字符串,可以进行分析和标记化。
但是如果数据类型被定义为关键字,则自动对其进行NOT分析,并返回完全完全匹配。
因此,当您想要区分大小写时,您应该记住将类型标记为关键字。
下面的代码示例,用于创建具有此定义的索引:
PUT testindex
{
"mappings": {
"original": {
"properties": {
"@timestamp": {
"type": "date"
},
"@version": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"APPLICATION": {
"type": "text",
"fields": {
"exact": {"type": "keyword"}
}
},
"type": {
"type": "text",
"fields": {
"exact": {"type": "keyword"}
}
}
}
}
}
}