我想知道是否可以在一個查詢中嵌套Elasticsearch
對象中的所有數組元素中搜索值?見我的情況下一:搜索嵌套彈性搜索對象中所有鍵的值
然後我插入以下數據(通過PHP
):
在ElasticSearch
數據庫,我在name
列配置嵌套對象
$data1 = array(
'descripotion' => 'Row 1',
'name' => [
'en' => 'First name data',
'ru' => 'Первое имя',
'de' => 'Eins data',
'it' => 'something else',
]
);
$data2 = array(
'descripotion' => 'Row 2',
'name' => [
'en' => 'Second name data',
]
);
然後我使用POST
方法通過Postman
Chrome
擴展:
POST http://localhost:9200/_search
身體是:
{
"query":{
"nested": {
"path": "name",
"query": {
"bool": {
"must": [
{ "match": { "name.en": "First" }}
]
}
}
}
}
}
這是可以正常使用。在上面的查詢中 - 我正在根據English
翻譯第name
列查詢數據。
所以,如果我想使用Russian
語言進行搜索,代碼就會一直跟着:
{ "match": { "name.ru": "First" }}
現在,我想做的事 - 是在同一時間所有的翻譯查詢(可以有提供1到100種語言)。喜歡的東西:
{ "match": { "name.*": "First" }}
的問題 - 這是可能的,用我目前的配置?如果沒有使用當前的配置,那麼如何?我知道,如果我將
name
列轉換回正常類型(而不是nested
) - 那麼它變得可能,因爲所有翻譯都集中在一個單獨的string
類型值中。但在那種情況下 - 我放棄了選擇性的可能性!我想都:) 最好,沒有數據重複。問題 - 如果我在同一時間搜索所有翻譯 - 是否可以優先考慮一種語言而不是另一種語言?因此,如果單詞
data
是5種語言 - 我想要包含English
搜索結果的文檔 - 列表中的第一個。