我们正在从ElasticSearch v7.6和OpenSearch v2.3迁移我们的应用程序。因此,在此过程中,我们首先使用以下定义在OpenSearch(2.3)集群中创建索引模板-
{
"order": 0,
"index_patterns": [
"note-management-1.0-*"
],
"settings": {
"index": {
"max_ngram_diff": "10",
"analysis": {
"filter": {
"ngram_filter": {
"type": "ngram",
"min_gram": "1",
"max_gram": "10"
}
},
"normalizer": {
"keyword_normalizer": {
"filter": [
"lowercase"
],
"type": "custom"
}
},
"analyzer": {
"text_analyzer": {
"filter": [
"lowercase",
"ngram_filter"
],
"type": "custom",
"tokenizer": "standard"
}
}
},
"number_of_shards": "5",
"number_of_replicas": "2"
}
},
"mappings": {
"properties": {
"owner": {
"copy_to": "permissionToView",
"type": "keyword"
},
"lastModifiedDate": {
"type": "date"
},
"contentReadOnly": {
"index": false,
"type": "boolean"
},
"lastModifiedBy": {
"index": false,
"type": "keyword"
},
"readOnly": {
"index": false,
"type": "boolean"
},
"title": {
"search_analyzer": "standard",
"analyzer": "text_analyzer",
"type": "text"
},
"permissionToView": {
"type": "keyword"
},
"version": {
"index": false,
"type": "long"
},
"content": {
"search_analyzer": "standard",
"analyzer": "text_analyzer",
"type": "text"
},
"tags": {
"normalizer": "keyword_normalizer",
"type": "keyword"
},
"noteType": {
"normalizer": "keyword_normalizer",
"type": "keyword"
},
"viewers": {
"copy_to": "permissionToView",
"index": false,
"type": "keyword"
},
"createdDate": {
"type": "date"
},
"externalObjects": {
"dynamic": false,
"type": "nested",
"properties": {
"displayName": {
"normalizer": "keyword_normalizer",
"type": "keyword"
},
"id": {
"normalizer": "keyword_normalizer",
"type": "keyword"
},
"type": {
"normalizer": "keyword_normalizer",
"type": "keyword"
},
"usersByPinned": {
"type": "keyword"
}
}
},
"deleters": {
"copy_to": "permissionToView",
"index": false,
"type": "keyword"
},
"id": {
"index": false,
"type": "keyword"
},
"outcome": {
"index": false,
"type": "keyword"
},
"editors": {
"copy_to": "permissionToView",
"index": false,
"type": "keyword"
}
}
},
"aliases": {
"note-management-1.0": {},
"note-management": {}
}
}
字符串
索引note-management
还没有在OpenSearch中创建,预期是一旦应用程序根据上面创建的模式创建了第一个文档,索引将被隐式创建。
应用程序能够创建索引和文档,但我们无法使用现有的应用程序检索它们,因为根据OpenSearch,查询格式不正确。
然后,我们删除了隐式创建的索引,并使用之前在ElasticSearch v7.6中创建的索引手动创建它。之后,应用程序能够毫无问题地索引/查询文档。
对于应用程序使用的查询和使用spring-boot-starter-data-elasticsearch库生成的索引,问题似乎是当应用程序创建索引时,它不遵循OpenSearch模式使用的格式和约定,这导致索引使用不正确的格式创建,稍后无法查询。
如果有Maven能给予我们一些关于为什么会发生这种情况以及如何解决这个问题的建议,我们将不胜感激。
例如,当我们使用spring-boot-starter-data-elasticsearch 2.4.11创建索引时,隐式索引的定义为-
{
"note-management" : {
"aliases" : { },
"mappings" : {
"properties" : {
"_class" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"content" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"contentReadOnly" : {
"type" : "boolean"
},
"createdDate" : {
"type" : "long"
},
"editors" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"id" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"lastModifiedBy" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"lastModifiedDate" : {
"type" : "long"
},
"noteType" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"owner" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"readOnly" : {
"type" : "boolean"
},
"title" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"version" : {
"type" : "long"
}
}
},
"settings" : {
"index" : {
"creation_date" : "1676061494880",
"number_of_shards" : "1",
"number_of_replicas" : "1",
"uuid" : "udj4QFKzSLSRyo8laD7vJA",
"version" : {
"created" : "135238227"
},
"provided_name" : "note-management"
}
}
}
}
型
这是不对的
所以我们必须删除这个索引,并手动创建它与正确的定义如下-
{
"note-management" : {
"aliases" : { },
"mappings" : {
"properties" : {
"content" : {
"type" : "text",
"analyzer" : "text_analyzer",
"search_analyzer" : "standard"
},
"contentReadOnly" : {
"type" : "boolean",
"index" : false
},
"createdDate" : {
"type" : "date"
},
"deleters" : {
"type" : "keyword",
"index" : false,
"copy_to" : [
"permissionToView"
]
},
"editors" : {
"type" : "keyword",
"index" : false,
"copy_to" : [
"permissionToView"
]
},
"externalObjects" : {
"type" : "nested",
"dynamic" : "false",
"properties" : {
"displayName" : {
"type" : "keyword",
"normalizer" : "keyword_normalizer"
},
"id" : {
"type" : "keyword",
"normalizer" : "keyword_normalizer"
},
"type" : {
"type" : "keyword",
"normalizer" : "keyword_normalizer"
},
"usersByPinned" : {
"type" : "keyword"
}
}
},
"id" : {
"type" : "keyword",
"index" : false
},
"lastModifiedBy" : {
"type" : "keyword",
"index" : false
},
"lastModifiedDate" : {
"type" : "date"
},
"noteType" : {
"type" : "keyword",
"normalizer" : "keyword_normalizer"
},
"outcome" : {
"type" : "keyword",
"index" : false
},
"owner" : {
"type" : "keyword",
"copy_to" : [
"permissionToView"
]
},
"permissionToView" : {
"type" : "keyword"
},
"readOnly" : {
"type" : "boolean",
"index" : false
},
"tags" : {
"type" : "keyword",
"normalizer" : "keyword_normalizer"
},
"title" : {
"type" : "text",
"analyzer" : "text_analyzer",
"search_analyzer" : "standard"
},
"version" : {
"type" : "long",
"index" : false
},
"viewers" : {
"type" : "keyword",
"index" : false,
"copy_to" : [
"permissionToView"
]
}
}
},
"settings" : {
"index" : {
"number_of_shards" : "1",
"provided_name" : "note-management-1.0.0",
"creation_date" : "1676062153821",
"analysis" : {
"filter" : {
"ngram_filter" : {
"type" : "ngram",
"max_ngram_diff" : "10",
"min_ngram_diff" : "1"
}
},
"normalizer" : {
"keyword_normalizer" : {
"filter" : [
"lowercase"
],
"type" : "custom"
}
},
"analyzer" : {
"text_analyzer" : {
"filter" : [
"lowercase",
"ngram_filter"
],
"type" : "custom",
"tokenizer" : "standard"
}
}
},
"number_of_replicas" : "1",
"uuid" : "RGYrVMtvSFWrSF1GwxuWKw",
"version" : {
"created" : "135238227"
}
}
}
}
}
型
1条答案
按热度按时间fbcarpbf1#
Spring Data Elasticsearch不是针对OpenSearch库或服务器构建或测试的。
您可能想查看spring-data-opensearch项目,该项目基于Spring Data Elasticsearch,但使用OpenSearch库与服务器通信。