我是Elasticsearch的新手,我确实需要开发一个功能,该功能具有搜索许多文档的唯一输入表单。我为每个文档创建一种语言,例如:
continents-en,continents-pt-br,countries-en,countries-pt-br,cities-en,cities-pt-br
每个文档都有特定属性(id,code,name,lat,long ...),例如:
洲烯 1,SA,北美
国家烯 1,美国,美国 2,BR,巴西
国家-PT-BR 1,美国,Estados Unidos 2,BR,Brasil
城市烯 1,纽约,拉特,朗...
城市-PT-BR 1,Nova Iorque,Lat,Long ......
第一个问题:这是最好的方法吗?
所以,我创建了这个弹性搜索搜索:
curl -XGET 'http://localhost:9000/countries- ,各大洲 - ,城市 - * / _搜索'-d' {“尺寸”:20, “查询”:{
"function_score": { "query": { "wildcard": { "name": "#{query}*" } }, "functions": [ { "filter": { "term": { "_type": "continent" }}, "weight": 10000 }, { "filter": { "term": { "_type": "country" }}, "weight": 8000 }, { "filter": { "term": { "_type": "city" }}, "weight": 6000 } ] } } }'
问题是当我在输入表单上输入“bra”时,我会收到结果:巴西和巴西。主要语言是葡萄牙语,所以如果我有葡萄牙语翻译,我会忽略英语翻译,因为结果具有相同的国家ID。
我该怎么做?