custom
dizininizi dizine ekleme şeklinizi değiştirmeniz gerekir. Sorun, ES'nin analiz sırasında düzleştirilmesidir, böylece custom
, tel
, 1234567
, weibo
, abcde
vb. Göstergelerini içerecektir, yani 2D yapısı kaybolur. Eğer tel
ve 1234566
sorgulayamaz istiyorsanız
, buna benzer bir nested
datatype, gibi custom
alanı tanımlamak gerekir.
PUT index
{
"mappings": {
"type": {
"properties": {
"name": {
"type": "string"
},
"age": {
"type": "integer"
},
"gender": {
"type": "string"
},
"custom": {
"type": "nested",
"properties": {
"key": {
"type": "string"
},
"value": {
"type": "string"
}
}
}
}
}
}
}
Sonra olabilir endeksi bu gibi belgeler: Nihayet
PUT index/type/1
{
"name": "test",
"age": 20,
"gender": "M",
"custom": [
{"key": "tel", "value": "1234567"},
{"key": "weibo", "value": "abcde"},
{"key": "weixin", "value": "abcdefg"}
]
}
, siz "tel 1234567" sorgulamak ve aşağıdaki sorgu ile bekliyoruz belgeleri alabilirsiniz:
POST index/type/_search
{
"query": {
"nested": {
"path": "custom",
"query": {
"bool": {
"must": [
{
"term": {
"custom.key": "tel"
}
},
{
"term": {
"custom.value": "1234567"
}
}
]
}
}
}
}
}
Can "custom" dizininiz nasıl tanımlanır? Bu iki boyutlu dizilimdeki problem, ES'nin analiz sırasında onu düzleştirmesidir, böylece 'custom', 'tel',' 1234567', 'weibo',' abcde' vb., Yani 2D yapısını içerecektir. – Val