我有一个保存电影标题的Elasticsearch数据库。
我想要实现的是从这个数据库中选择最接近的匹配项,看看我是否已经有了类似的标题。目前,我正在使用phrase_matching和单词匹配的组合来尝试实现这一点。下面是我正在努力解决的问题:
在数据库中:它在夜间出现
搜索: It
这将明显地匹配,因为它在slop参数中,并将100%的单词与数据库中的单词匹配。但是我想要的是这个搜索失败,因为我的搜索只包含了elasticsearch中整个句子的25%。(几乎就像是反向匹配)。
原因是“It”和“It comes at night”实际上是两个不同的标题,当这个搜索发生时,它们可能/可能还没
我在ElasticSearch中遇到位置查询返回错误结果的问题。
在我们的系统中,一个商业搜索引擎,每个搜索都有两个输入:一个位置和一个查询字符串,例如
q=sushi
location=Greenwich Village, New York, New York
我希望搜索结果首先显示格林威治村的寿司,然后显示格林威治村以外的寿司,但永远不会显示非寿司的结果。
问题是,由于location查询,格林威治村的任何东西都可以匹配--律师、医生等等。我想对ElasticSearch说以下几点:
如果Q匹配,则位置不需要(可以在格林威治村以外退回寿司),但如果位置匹配,则不要退货,除非Q也匹配(不可以
我需要构建elasticsearch查询,并根据数组中的字段值定位进行排序。
类似于MySQL:
SELECT * FROM `comments` ORDER BY FIELD(`id`,'17','3','5','12') DESC, id DESC;
或Postgres:
SELECT * FROM comments
LEFT JOIN unnest('{12,5,3,17}'::int[]) WITH ORDINALITY t(id, ord) USING (id) ORDER BY t.ord, id D
想知道下面sql查询的等价elasticsearch查询吗?
SELECT * FROM table1 where val1 in (SELECT val1 FROM table1 WHERE val2 = "123");
如何以有效的方式实现这一点?
一种方法是获取第一个Elasticsearch查询中的所有值,并使用val1值获取第二个Elasticsearch查询中的所有值。有没有其他方法可以让我们在一个Elasticsearch查询中获得结果,而不是两个Elasticsearch查询