Elixir config.exsファイルからElasticsearch 7.xインデックスを作成したいです。
config :app_core, App.Tools.ElasticsearchCluster,
url: System.get_env("ELASTIC_Host"),
# username: "username",
# password: "password",
api: Elasticsearch.API.HTTP,
json_library: Poison,
indexes: %{
indie: %{
settings: "priv/elasticsearch/indies.json",
store: App.Tools.ElasticSearch.Indie.Store,
sources: [App.Data.Schema.Indie],
bulk_page_size: 5000,
bulk_wait_interval: 15_000
}
}
_
NS priv/elasticsearch/indies.json
は始まります
{
"mappings": {
"_doc": {
"properties": {
"category" : {
"type": "nested",
"properties" : {
_
ただし、インデックスを作成しようとすると、エラーが発生します
"The mapping definition cannot be nested under a type [_doc] unless include_type_name is set to true."
_
どなたでもこの問題を解決する方法を知っていますか。
Assael Azranからのリクエストに応じて、これが完全なインディースです。
{
"mappings": {
"_doc": {
"properties": {
"category" : {
"type": "nested",
"properties" : {
"all_parents" : {
"type" : "keyword"
},
"direct_parent" : {
"type" : "keyword"
},
"paths" : {
"type" : "keyword"
}
}
},
"slug": {
"type": "keyword"
},
"parent_id": {
"type": "integer",
"index": false
},
"images": {
"type": "nested",
"properties": {
"indie_url": {
"type": "text",
"index": false
}
}
},
"tenant": {
"type": "keyword"
},
"suggest_keywords": {
"type": "completion",
"contexts": [
{
"name": "tenant",
"type": "category"
}
]
},
"name": {
"type": "text"
},
"description": {
"type": "text",
"index": false
},
"updated_at": {
"type": "date"
},
"string_facet": {
"type": "nested",
"properties": {
"id": {
"type": "keyword"
},
"value": {
"type": "keyword"
}
}
},
"number_facet": {
"type": "nested",
"properties": {
"id": {
"type": "keyword"
},
"value": {
"type": "double"
}
}
}
}
}
}
}
_
マッピング型はバージョン7.xではサポートされなくなりました。
Elasticsearch 7.xリクエスト内のタイプを指定することは推奨されていません。たとえば、文書を索引付けするには、ドキュメントタイプが必要ありません。新規インデックスAPIは、明示IDの場合は{index}/_ doc/{ID}に属し、自動生成されたIDの場合はPOST {index}/_ doc。 7.0では、_docはパスの恒久的な部分であり、文書タイプではなくエンドポイント名を表します。インデックス作成、インデックステンプレート、およびマッピングAPIのINCLUDE_TYPE_NAMEパラメーターは、デフォルトはfalseになります。パラメータをすべて設定すると、廃止予定の警告が発生します。 デフォルトマッピングタイプが削除されました。
私の提案はあなたのマッピングから_doc
タイプを削除することです。
{"mappings":{"property":{"category":{"type": "nested"、 "properties":{"
[〜#〜]更新[〜#〜]
弾性7.2.0でテスト済み
次のマッピングを作成しようとしました。
PUT my_index
{
"mappings": {
"_doc": {
"properties": {
"category": {
"type": "nested",
"properties": {
"all_parents": {
"type": "keyword"
},
"direct_parent": {
"type": "keyword"
},
"paths": {
"type": "keyword"
}
}
},
"slug": {
"type": "keyword"
},
"parent_id": {
"type": "integer",
"index": false
},
"images": {
"type": "nested",
"properties": {
"indie_url": {
"type": "text",
"index": false
}
}
},
"tenant": {
"type": "keyword"
},
"suggest_keywords": {
"type": "completion",
"contexts": [
{
"name": "tenant",
"type": "category"
}
]
},
"name": {
"type": "text"
},
"description": {
"type": "text",
"index": false
},
"updated_at": {
"type": "date"
},
"string_facet": {
"type": "nested",
"properties": {
"id": {
"type": "keyword"
},
"value": {
"type": "keyword"
}
}
},
"number_facet": {
"type": "nested",
"properties": {
"id": {
"type": "keyword"
},
"value": {
"type": "double"
}
}
}
}
}
}
}
そして予想されるように私はこのエラーを得る:
{
"error": {
"root_cause": [
{
"type": "illegal_argument_exception",
"reason": "The mapping definition cannot be nested under a type [_doc] unless include_type_name is set to true."
}
],
"type": "illegal_argument_exception",
"reason": "The mapping definition cannot be nested under a type [_doc] unless include_type_name is set to true."
},
"status": 400
}
マッピングから_doc
を削除すると:
PUT my_index
{
"mappings": {
"properties": {
"category": {
"type": "nested",
"properties": {
"all_parents": {
"type": "keyword"
},
"direct_parent": {
"type": "keyword"
},
"paths": {
"type": "keyword"
}
}
},
"slug": {
"type": "keyword"
},
"parent_id": {
"type": "integer",
"index": false
},
"images": {
"type": "nested",
"properties": {
"indie_url": {
"type": "text",
"index": false
}
}
},
"tenant": {
"type": "keyword"
},
"suggest_keywords": {
"type": "completion",
"contexts": [
{
"name": "tenant",
"type": "category"
}
]
},
"name": {
"type": "text"
},
"description": {
"type": "text",
"index": false
},
"updated_at": {
"type": "date"
},
"string_facet": {
"type": "nested",
"properties": {
"id": {
"type": "keyword"
},
"value": {
"type": "keyword"
}
}
},
"number_facet": {
"type": "nested",
"properties": {
"id": {
"type": "keyword"
},
"value": {
"type": "double"
}
}
}
}
}
}
私はこれを入手します
{
"acknowledged" : true,
"shards_acknowledged" : true,
"index" : "my_index"
}