elasticsearch OpenSearch索引创建问题

6xfqseft  于 9个月前  发布在  ElasticSearch
关注(0)|答案(1)|浏览(133)

我们正在从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"
        }
      }
    }
  }
}

fbcarpbf

fbcarpbf1#

Spring Data Elasticsearch不是针对OpenSearch库或服务器构建或测试的。
您可能想查看spring-data-opensearch项目,该项目基于Spring Data Elasticsearch,但使用OpenSearch库与服务器通信。

相关问题