10

申し訳ありませんが、ElasticSearchは初めてです。

http://www.elasticsearch.org/guide/reference/api/admin-indices-put-mapping.html

このドキュメントには、「Twitterインデックス内にツイートと呼ばれるマッピングを作成する」ことができると書かれています

$ curl -XPUT 'http://localhost:9200/twitter/tweet/_mapping' -d '
{
    "tweet" : {
        "properties" : {
            "message" : {"type" : "string", "store" : "yes"}
        }
    }
}
'

誰かがESIRCチャンネルで私に言ったように、/ twitter / tweet twitter = index、tweet = type

しかし、次のようにするとどうなりますか?

$ curl -XPUT 'http://localhost:9200/twitter/XXX/_mapping' -d '
{
    "YYY" : {
        "properties" : {
            "message" : {"type" : "string", "store" : "yes"}
        }
    }
}
'

URLでタイプ名をすでに指定している場合でも、コンテンツでタイプ名を指定する必要があるのはなぜですか?コンテンツにタイプ名を指定した場合、次のようなURLを呼び出せないのはなぜですか。

$ curl -XPUT 'http://localhost:9200/twitter/_mapping' -d '

ドキュメントを読んでいると、「Twitterインデックス内にツイートというマッピングを作成する」と書かれています。これは、XXXがマッピング名で、YYYがタイプ名であることを意味します。

したがって、マッピング名がある場合、通常、インデックスには多くの「マッピング」が存在する可能性があります

それで、結局、XXXとYYYは同じである/同じである必要がありますか?


それは私がドキュメントから理解していることではありませんが、私が思うことは次のとおりです:-1つのインデックスはタイプを持つことができます-タイプはマッピングを持っていますしたがって、ドキュメントが言うようにマッピングを作成しませんが、マッピングを持つタイプを作成します、または、タイプのマッピングを更新しますか?

そして、どのタイプも使用したくない(インデックス付けされたすべてのドキュメントは同じ種類のデータです)が、そのインデックスのマッピングを作成したいインデックスでは、1つのタイプのみを作成してそれを処理することになっていますか?マッピングし、常にそのタイプを使用しますか(たとえば、CouchDBリバーで)?

ありがとう

4

1 に答える 1

11

現在のバージョンのelasticsearchsearch(0.19.4)では、「YYY」は無視され、マッピングは「XXX」タイプに割り当てられます。

実際、マッピングの作成は型の作成と考えることができます。内部的には、型はマッピングの観点から表され、ドキュメントはこの動作を反映しているだけです。すべてのレコードが同じタイプである場合は、インデックスを1つのタイプのみのインデックスとして扱う必要があります。タイプは、さまざまなタイプのレコードを「名前空間」にするために使用されるため、必須です。ID自体はレコードを一意に識別しません。Elasticsearchでレコードを識別するには、インデックス、タイプ、IDが必要です。これが、たとえば、タイプがget操作に必須のパラメーターである理由です。その他の操作では、typeが指定されていない場合、elasticsearchは、すべてのタイプのレコードを使用して操作を実行することを想定しています。

新しいタイプのレコードを追加することにより、いつでもタイプを動的に作成できることに注意してください。したがって、1つのタイプしかないインデックスは、2番目のタイプがまだないインデックスです。

于 2012-06-05T17:07:55.833 に答える