我刚刚开始学习Elasticsearch。我的数据包含公司名称及其网站,并且我有一个列表,其中包含公司的所有域别名。我正在尝试编写一个查询,以提高列表中相同网站的记录。
我的数据如下:
{"company_name": "Kaiser Permanente","website": "http://www.kaiserpermanente.org"},{"company_name": "Kaiser Permanente - Urgent Care","website": "http://kp.org"}.
域别名的列表为:
["kaiserpermanente.org","kp.org","kpcomedicare.org","kp.com"]
实际列表比上面的示例长。我已经尝试过以下查询:
{
"bool": {
"should": {
"terms": {
"website": [
"kaiserpermanente.org","kp.com"
],"boost": 20
}
}
}
}
该查询不返回任何内容,因为“条件”查询完全匹配。列表中的域和url相似但不相同。
除了查询,我应该返回示例中的两条记录。我认为“匹配”可以工作,但是我不知道如何将值与列表中的任何相似值匹配。
我发现了类似的问题How to do multiple "match" or "match_phrase" values in ElasticSearch。该解决方案有效,但我的别名列表包含50多个元素。如果我为每个元素写多个“ match_phrase”,将非常冗长。有没有更有效的方式,例如“条款”,这样我就可以通过列表?
如果有人可以帮助我,我将不胜感激,谢谢!