同じクエリ内に 2 つの multi_match 検索があるというシナリオがあります。問題は、Ruby で JSON を作成すると、一意でないキーを持つ json は不可能と思われるため、そのうちの 1 つだけが表示されることです。
これが私のクエリです:
{
"fields": ["id", "title",
"address.city", "address.state", "address.country", "address.state_code", "address.country_code", "proxy_titles", "location"],
"size":2,
"query":{
"filtered":{
"filter": {
"range": {
"custom_score": {
"gte": 100
}
}
},
"query":{
"bool": {
"must": {
"multi_match":{
"query": "term 1",
"type": "cross_fields",
"fields": ["title^2", "proxy_titles^2","description"]
}
},
"must": {
"multi_match": {
"query": "us",
"fields": ["address.city", "address.country", "address.state",
"address.zone", "address.country_code", "address.state_code", "address.zone_code"]
}
}
}
}
}
},
"sort": {
"_score": { "order": "desc" },
"variation": {"order": "asc"},
"updated_at": { "order": "desc" }
}
}
私も最近elasticsearchを使い始めたばかりなので、同じことを達成するためのより良いクエリを提案していただければ非常に役に立ちます。