如何在不分析数据的情况下使用不区分大小写的过滤器进行搜索? 对于例如在这个例子中,我得到了" delhi"和"德里"由于资本化而单独进入。
new york 2
Delhi 1
delhi 1
new Jersey 1
预期结果:
new york 2
delhi 2
new jersey 1
我尝试过小写分析器,但为此我需要将索引更改为将返回" new"作为一个单独的城市,这是错误的。
DELETE /test_index
PUT /test_index
{
"mappings": {
"doc": {
"properties": {
"cities": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
POST /test_index/doc/_bulk
{"index":{"_id":1}}
{"cities":["new york", "delhi"]}
{"index":{"_id":2}}
{"cities":["new york", "Delhi", "new Jersey"]}
POST /test_index/_search?search_type=count
{
"aggs": {
"city_terms": {
"terms": {
"field": "cities"
}
}}}
答案 0 :(得分:2)
是的,但您仍然需要type TCPConn struct {
conn
}
分析器完成与keyword
完全相同的工作,但只会降低您的输入:
not_analyzed
<强>更新强>
在ES 5之前,你可以这样做:
PUT /test_index
{
"settings": {
"analysis": {
"analyzer": {
"keyword": {
"type": "custom",
"tokenizer": "keyword",
"filter": ["lowercase"]
}
}
}
},
"mappings": {
"doc": {
"properties": {
"cities": {
"type": "string",
"analyzer": "keyword"
}
}
}
}
}