当前位置: 首页 > 知识库问答 >
问题:

弹性搜索多项搜索

丰胤运
2023-03-14

我使用Elasticsearch允许用户输入要搜索的术语。例如,我要搜索以下属性'name':

“名称”:“这辆车是黑色的”

如果使用以下代码搜索black carcar black,我希望返回此文档。

我尝试过做一个bool must和做多个术语['black','car'],但它似乎只有在整个字符串都匹配的情况下才起作用。

所以我真正想做的是,这个词是否以任何顺序包含两个词。

有人能帮我走上正轨吗?我已经在这上面砸了一段时间了。

共有1个答案

陶高峯
2023-03-14

如果看起来只有在整个字符串匹配时才有效,那么首先确保在索引映射中分析了字符串属性名称,即该属性的映射不包含“index”:“not_analysis”。如果不是这样,则需要重新索引索引,以便能够搜索令牌,而不是只搜索整个短语。

一旦您确定您的字符串被分析,您可以使用:

  1. 术语查询,其“minimum_should_match”参数等于输入的字数。
  2. bool查询,使用must子句包含每个单词的术语查询。
  3. Common terms query,除了采用更聪明的方法来分析停用词之外,它还提供了一个非常简洁的语法(您不需要分解输入字符串并在应用程序中构造更复杂的查询结构,就像前两个应用程序一样)。
 类似资料:
  • 我在研究弹性搜索查询。我不能理解这个问题: 我读过这篇文章,但不清楚:http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-term-query.html 1-第二个“term”是什么? 2-boost的用法是什么? 3-如何使用一个或多个term进行查询: 名为“title”的字段必须包含:

  • 我对Elasticsearch相当陌生,所以这是我的问题。我想用elasticsearch做一个搜索查询,想用多个术语过滤。 如果我想搜索用户'Tom',那么我希望获得用户'is active=1'、'is private=0'和'is owner=1'的所有匹配项。 这是我的搜索查询 谢谢你的帮助!!

  • 我有大量相同类型的实体,每个实体都有大量属性,并且我只有以下两种选择来存储它们: 将每个项存储在索引中并执行多索引搜索 将所有enties存储在单个索引中,并且只搜索1个索引。 一般而言,我想要一个时间复杂度之间的比较搜索“N”实体与“M”特征在上述每一种情况!

  • 我有以下格式的弹性搜索文档 } } 我的要求是,当我搜索特定字符串(string.string)时,我只想获得该字符串的FileOffSet(string.FileOffSet)。我该怎么做? 谢谢

  • 当我执行ps-aef grep elasticsearch HeapDumpOnOutOfMemoryError时看到了这一点 501 373 47 1 0 2:29pm ttys004 0:04.14/usr/bin/Java-xms4g-xmx4g-xss256k-djava.awt.headless=true-xx:+useparnewgc-xx:+useparnewgc-xx:+usepa

  • 我从ElasticSearch得到以下错误。 我在Ubuntu上运行Elasticsearch 1.7.2。 我做错了什么?