web-dev-qa-db-ja.com

Elasticsearch:ルートマッピング定義にサポートされていないパラメーターインデックスがあります:not_analyzed

こんにちは、スキーマTestを作成しようとしています。

PUT /test
{
    "mappings": {
        "field1": {
            "type": "integer"
        },
        "field2": {  
            "type": "integer"
        },
        "field3": {
            "type": "string",
            "index": "not_analyzed"
        },
        "field4": {
            "type": "string",
            "analyzer": "autocomplete",
            "search_analyzer": "standard"
        }
    },
    "settings": {
        bla
        bla
        bla
    }
}

次のエラーが表示されます

{
    "error": {
        "root_cause": [{
            "type": "mapper_parsing_exception",
            "reason": "Root mapping definition has unsupported parameters: [index : not_analyzed] [type : string]"
        }],
        "type": "mapper_parsing_exception",
        "reason": "Failed to parse mapping [featured]: Root mapping definition has unsupported parameters:  [index : not_analyzed] [type : string]",
        "caused_by": {
            "type": "mapper_parsing_exception",
            "reason": "Root mapping definition has unsupported parameters:  [index : not_analyzed] [type : string]"
        }
    },
    "status": 400
}

このエラーを解決するのを手伝ってください

38
Ramesh

あなたはほとんどここにいます、あなたはいくつかのことを見逃しています:

PUT /test
{
  "mappings": {
    "type_name": {                <--- add the type name
      "properties": {             <--- enclose all field definitions in "properties"
        "field1": {
          "type": "integer"
        },
        "field2": {
          "type": "integer"
        },
        "field3": {
          "type": "string",
          "index": "not_analyzed"
        },
        "field4,": {
          "type": "string",
          "analyzer": "autocomplete",
          "search_analyzer": "standard"
        }
      }
    }
  },
  "settings": {
     ...
  }
}

UPDATE

インデックスが既に存在する場合、次のようにマッピングを変更することもできます。

PUT test/_mapping/type_name
{
    "properties": {             <--- enclose all field definitions in "properties"
        "field1": {
          "type": "integer"
        },
        "field2": {
          "type": "integer"
        },
        "field3": {
          "type": "string",
          "index": "not_analyzed"
        },
        "field4,": {
          "type": "string",
          "analyzer": "autocomplete",
          "search_analyzer": "standard"
        }
    }
}

UPDATE

ES 7では、マッピングタイプが削除されました。詳細を読むことができます こちら

60
Val

上記の回答がエラスティック検索<7.0で機能することを願っていますが、7.0ではドキュメントタイプを指定できず、サポートされなくなりました。その場合、docタイプを指定すると、同様のエラーが発生します。

Elastic search 7.0およびNest C#の最新バージョン(6.6)を使用しています。この問題の原因となっているES 7.0には、いくつかの重大な変更があります。これは、docタイプを指定できず、NESTのバージョン6.6ではdoctypeを使用しているためです。したがって、NEST 7.0がリリースされるまでそれを解決するには、ベータパッケージをダウンロードする必要があります。

このリンクを修正してください

https://xyzcoder.github.io/elasticsearch/nest/2019/04/12/es-70-and-nest-mapping-error.html

EDIT:NEST 7.0がリリースされました。 NEST 7.0はElastic 7.0で動作します。詳細については、 リリースノートはこちら を参照してください。

Elasticバージョンを確認してください。

バージョンの間違ったドキュメントを見ていたため、これらの問題が発生しました。

enter image description here

2
qarly_blue