如何在弹性搜索中创建和添加值到标准小写分析器
How to create and add values to a standard lowercase analyzer in elastic search
在过去的几天里,我一直在用这个进行各种尝试,但无法弄清楚为什么它不起作用。
我正在尝试使用与 "standard" 分析器相同但在存储记录时保留大写字符的分析器在 Elasticsearch 中创建索引。
我按如下方式创建分析器和索引:
PUT /upper
{
"settings": {
"index" : {
"analysis" : {
"analyzer": {
"rebuilt_standard": {
"tokenizer": "standard",
"filter": [
"standard"
]
}
}
}
}
},
"mappings": {
"doc": {
"properties": {
"title": {
"type": "text",
"analyzer": "rebuilt_standard"
}
}
}
}
}
然后添加两条记录这样测试...
POST /upper/doc
{
"text" : "TEST"
}
添加第二条记录...
POST /upper/doc
{
"text" : "test"
}
使用 /upper/_settings 给出以下结果:
{
"upper": {
"settings": {
"index": {
"number_of_shards": "5",
"provided_name": "upper",
"creation_date": "1537788581060",
"analysis": {
"analyzer": {
"rebuilt_standard": {
"filter": [
"standard"
],
"tokenizer": "standard"
}
}
},
"number_of_replicas": "1",
"uuid": "s4oDgdsFTxOwsdRuPAWEkg",
"version": {
"created": "6030299"
}
}
}
}
}
但是当我使用以下查询进行搜索时,我仍然得到两个匹配项!大写和小写都表示我存储记录时没有应用分析器。
像这样搜索...
GET /upper/_search
{
"query": {
"term": {
"text": {
"value": "test"
}
}
}
}
提前致谢!
首先,您将分析器设置在 title
字段上而不是 text
字段上(因为您的搜索是在文本 属性 上进行的,并且您正在索引文档只有 text
属性)
"properties": {
"title": {
"type": "text",
"analyzer": "rebuilt_standard"
}
}
尝试
"properties": {
"text": {
"type": "text",
"analyzer": "rebuilt_standard"
}
}
并随时通知我们 ;)
在过去的几天里,我一直在用这个进行各种尝试,但无法弄清楚为什么它不起作用。
我正在尝试使用与 "standard" 分析器相同但在存储记录时保留大写字符的分析器在 Elasticsearch 中创建索引。
我按如下方式创建分析器和索引:
PUT /upper
{
"settings": {
"index" : {
"analysis" : {
"analyzer": {
"rebuilt_standard": {
"tokenizer": "standard",
"filter": [
"standard"
]
}
}
}
}
},
"mappings": {
"doc": {
"properties": {
"title": {
"type": "text",
"analyzer": "rebuilt_standard"
}
}
}
}
}
然后添加两条记录这样测试...
POST /upper/doc
{
"text" : "TEST"
}
添加第二条记录...
POST /upper/doc
{
"text" : "test"
}
使用 /upper/_settings 给出以下结果:
{
"upper": {
"settings": {
"index": {
"number_of_shards": "5",
"provided_name": "upper",
"creation_date": "1537788581060",
"analysis": {
"analyzer": {
"rebuilt_standard": {
"filter": [
"standard"
],
"tokenizer": "standard"
}
}
},
"number_of_replicas": "1",
"uuid": "s4oDgdsFTxOwsdRuPAWEkg",
"version": {
"created": "6030299"
}
}
}
}
}
但是当我使用以下查询进行搜索时,我仍然得到两个匹配项!大写和小写都表示我存储记录时没有应用分析器。
像这样搜索...
GET /upper/_search
{
"query": {
"term": {
"text": {
"value": "test"
}
}
}
}
提前致谢!
首先,您将分析器设置在 title
字段上而不是 text
字段上(因为您的搜索是在文本 属性 上进行的,并且您正在索引文档只有 text
属性)
"properties": {
"title": {
"type": "text",
"analyzer": "rebuilt_standard"
}
}
尝试
"properties": {
"text": {
"type": "text",
"analyzer": "rebuilt_standard"
}
}
并随时通知我们 ;)