我尝试使用以下映射创建索引: createIndexRequestBuilder = client.admin()。indices()。prepareCreate(document.indexName());
XContentBuilder mappingBuilder = jsonBuilder()
.startObject()
.startObject("my_type")
.startObject("properties")
.startObject("nombre")
.field("type", "string")
.field("index", "not_analyzed")
.endObject()
.startObject("codigo")
.field("type", "string")
.field("index", "not_analyzed")
.endObject()
.endObject()
.endObject()
.endObject();
createIndexRequestBuilder.addMapping("my_type", mappingBuilder);
然后,如果我尝试以下搜索:
GET /hogan/tipos-documento/_search?pretty
{
"query": {
"bool": {
"must": [
{"wildcard": {
"nombre": {
"value": "*Type 2*"
}
}}
]
}
}
}
没有问题。但是,如果我尝试"价值" :" 类型2 没有结果因为"通配符"区分大小写。
有没有办法对不敏感的案件进行搜索?也许以另一种方式做索引......
简化,我希望实体像:
public class Entity{
private Long id;
private String name;
}
并有一个搜索表单,用户可以在其中输入" name"的部分文字。 (大写或小写"进行搜索
提前致谢
答案 0 :(得分:0)
您的nombre
字段不应为index: not_analyzed
,而是使用keyword
和lowercase
分析器进行分析。像这样:
{
"settings": {
"index": {
"analysis": {
"analyzer": {
"keyword_lowercase": {
"type": "custom",
"tokenizer": "keyword",
"filter": [
"lowercase"
]
}
....
然后,在映射中:
"nombre": {
"type": "string",
"analyzer": "keyword_lowercase"
}