このようなメッセージをelasticsearchにプッシュしようとしています
id=1
list=asd,bcv mnmn,kjkj, pop asd dgf
そのため、各メッセージにはid
文字列であるlist
フィールドと、文字列値のリストを含むフィールドがあります
これをエラスティックにプッシュしてキバナでチャートを作成しようとすると、デフォルトのアナライザーが作動list
してスペース文字で分割されます。したがって、それは私の価値観を壊します。としてインデックスのマッピングを作成しようとしました
mapping='''
{
"test":
{
"properties": {
"DocumentID": {
"type": "string"
},
"Tags":{
"type" : "string",
"index" : "not_analyzed"
}
}
}
}'''
es = Elasticsearch([{'host': server, 'port': port}])
indexName = "testindex"
es.indices.create(index=indexName, body=mapping)
これにより、定義したマッピングでインデックスが作成されます。今、私は単にメッセージをプッシュします
es.index(indexName, docType, messageBody)
でも今でもキバナは私の価値観を壊してくれます!マッピングが適用されなかったのはなぜですか?
そして私がするとき
GET /testindex/_mapping/test
私は得る
{
"testindex": {
"mappings": {
"test": {
"properties": {
"DocumentID": {
"type": "string"
},
"Tags": {
"type": "string"
}
}
}
}
}
}
なぜマッピングが変更されたのですか?マッピング タイプを指定する方法
es.index()