当前位置: 首页 > 面试题库 >

elasticsearch匹配搜索查询中来自文档的所有单词

柯梓
2023-03-14
问题内容

我们可以像这样在特定document.field中搜索所有单词:

{ "query" : { "match" : { "title": { "query" : "Black Nike Mens", "operator" : "and" } } } }

这将搜索词BlackNikeMens在该领域title,从而只返回这些文档将在所有这些词title场。

但是我想做的却有些不同。

我想进行查找,以便如果title该文档字段的所有单词都出现在我的搜索查询中,则它将返回该文档。

例如

假设title : "Nike Free Sparq Mens White"Elasticsearch数据库中有一个文档

现在,如果我搜索“ a”,query : "Nike Free Sparq 09 - Mens - White/Black/Varsity Red"它将返回该文档,因为document.title中的所有单词确实存在于我的查询中

但是,如果我搜索“ a”,query : "Nike Free Lebron - Mens - White/Black"则它不应返回文档,因为我的查询中Sparq缺少“ word”一词

这是一种反向运算符搜索

这可能吗?如果是,那怎么办?


问题答案:

我终于让它工作了,但没有直接方法!

这是我的工作:

  • 通过以下方式从源查询中创建单词的干净列表:
    • 更改为小写
    • 用空格替换任何特殊字符和标点符号
    • 删除重复的单词
  • 使用带有OR运算符的普通匹配搜索以字符串形式连接的单词
  • 现在,我们将找到结果中最相关的匹配
  • 我们一个接一个地点击,并在php(或您使用的任何编程语言)中进行逐词搜索
  • 此词搜索将根据我们刚刚找到的匹配项检查文档中的所有词,并将其与源查询中的词匹配;这样,命中文档中的所有单词都应出现在源查询字符串中

这对我来说足够好了!

除非有人从Elasticsearch查询语言获得直接方法。



 类似资料:
  • 如何获取搜索查询匹配的文档中的所有字段?关于<code>字段</code>的ES文档指出,使用<code>*</code>,可以获得所有字段:http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-fields.html 有了这个文档和这个查询,我得到了结果,但没有返回任何字段: 放置

  • 我是Elasticsearch的新手,我面临一个问题。我的任务是搜索一组文档。例如,我有这样结构的数据: 但是困难的是,我如何获取所有带有project_id=abc的文档,然后通过与关键字“测试”匹配的任何其他字段(代码、名称、状态)搜索它们(例如)。我如何在Elasticsearch查询中做到这一点,请帮助我! 谢谢

  • 如果我在浏览器中直接对elasticsearch进行搜索,例如: http://localhost:9200/mydocs/_search?q=awesome%20搜索 搜索体数据实际上是什么样子的?它是否执行并包含所有字段?我尝试过编写一个包含所有字段的,但在浏览器中正确操作会得到不同的结果。

  • 我是一个新的Elasticserach和正在寻找一个解决方案,我们现有的情况。假设我创建了一个文档: 我想在不显式指定字段名的情况下搜索字段。 例如,如果我的搜索查询字符串是“bin”,我希望在所有字段中搜索id、value、role和desc。在ElasticSearch有什么办法可以做吗?

  • 我有几个产品的变化,像下面的一个 我正在寻找一个具有以下所有参数的查询 获取某个类别中的所有产品 获取所有黑色的产品 获取尺寸l和M 我当前的查询: 它的工作很好,如果我只搜索1个大小。但是一旦我搜索了2个尺寸,它就不会给出任何记录。我的猜测是,它在每个嵌套变体中寻找所有3个参数,显然它找不到。如何修改要搜索的查询 null 我的第二个问题:

  • 问题内容: 我想知道为什么搜索特定术语会返回索引的所有文档,而不返回包含所请求术语的文档。 这是索引以及我的设置方法:(使用elasticsearch头插件浏览器界面) 然后我添加了一些文档: 因此,现在触发“ plaat”搜索时,人们会希望搜索会返回包含“ plaatstaal”的文档。 但是为我节省了更多的搜索,elasticsearch会恢复所有文档的大小,无论其文本内容如何。我在这里想念什