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

ElasticSearch:不匹配

濮阳唯
2023-03-14

我想同时执行精确的单词匹配和部分单词/子字符串匹配。例如,如果我搜索“test product”,那么我应该能够在结果中找到“test”和“product”相关的文本。我用下面的match查询搜索弹性搜索,它不是给我精确的匹配,而是给我一些更多的不确定的匹配。示例是在结果中给出与“sample”相关的文本。

我使用弹性搜索6.3

请在下面找到我的查询

搜索结果:“Hits”:[{“_index”:“67107104”,“_type”:“_doc”,“_id”:“1”,“_score”:0.6931471,“_source”:{“title”:“testing”}},{“_index”:“67107104”,“_type”:“_doc”,“_id”:“2”,“_score”:0.6931471,“_source”:{“title”:“testing”}},“_type”:“product good”}},{“_index”:“67107104”,“_id”:“3”,

预期搜索结果:

“命中”:[{“_index”:“67107104”,“_type”:“_doc”,“_id”:“1”,“_score”:0.6931471,“_source”:{“title”:“testing”}},{“_index”:“67107104”,“_type”:“_doc”,“_id”:“2”,“_score”:0.6931471,“_source”:{“title”:“Product Good”}}]

共有1个答案

闾丘谦
2023-03-14

在上面的搜索查询中,您正在review字段中进行搜索,而在搜索结果中,您正在获取title字段的数据

添加具有索引数据、搜索查询和搜索结果的工作示例

索引数据:

{
  "review": "testing"
}
{
  "review": "product good"
}
{
  "review": "sample"
}
{
  "query": {
    "match": {
      "review": "test product"
    }
  }
}
 "hits": [
  {
    "_index": "67119314",
    "_type": "_doc",
    "_id": "2",
    "_score": 0.2876821,
    "_source": {
      "review": "product good"
    }
  }
]
 类似资料:
  • 问题内容: 我正在使用Elasticsearch的php库对我的网站进行索引和查找文档。这是用于创建索引的代码: 然后,我使用curl XPUT将文档添加到索引,并使用XGET查询索引。除了返回结果时跨索引的单数和复数查询词不匹配之外,这种方法效果很好。例如,当我搜索“讨论”时,不返回“讨论”的匹配项,反之亦然。为什么会这样呢?我认为这是默认情况下在Elasticsearch中处理的。为了匹配单数

  • 我和ElasticSearch一起工作。当我执行此查询时: 我得到了我想要的(所有的结果,其中有参考黑莓,但不是Q10)。 但是,我想限制搜索的字段只限于“title”字段。例如,_source文档有标题、正文、标签等,我只想搜索标题。ElasticSearch“匹配”似乎很适合我... 虽然这只成功地搜索了标题,但它仍然返回标题中带有Q10的结果,这与上面的搜索不同。 我正在看比赛文档,但似乎不

  • 问题内容: 我正在使用Elasticsearch,但有一段时间魔鬼般地要进行精确匹配。我已经尝试过match,query_string等的各种组合,但是我什么也没得到,或者得到了不好的结果。查询看起来像这样: 排序结果 我当然知道“狗”,“那只狗”和“狗”的得分相同,但是我需要弄清楚如何提高得分“狗”的精确匹配度。 我也试过 但这仍然给我 问题答案: 默认情况下,使用标准分析仪分析字段。如果您想检

  • 当我通过一个特定方面进行过滤时,该特定字段的方面在结果中被正确过滤,但其他方面的字段保持不变。解释这一点的最佳方法是使用查询和响应。 因此,如您所见,它返回所有方面,即使唯一的结果位于Eugene。它还返回的计数7。为什么它会返回所有这些额外的方面和错误的计数?下面是我的ruby映射。

  • 我有一个带有标准分析器的弹性搜索集群。我知道使用这个分析仪,术语“300”被分析为一种类型。 假设我正在搜索一个具有字段“name”的文档,该字段的值为“纸巾300 CT”,分析为[“Paper”(ALPHANUM)、“tower”(ALPHANUM)、“300”(NUM)、“CT”(ALPHANUM)] 目前,当我使用模糊/通配符查询时,如下所示: 无论模糊性如何调整,模糊查询都不匹配。我希望术

  • elasticSearch搜索:比如,我有一个关键字是“北京地铁”,但是我只想搜索挨着的关键词,比如搜索【北京】或者搜索【地铁】或者在搜索【北京地铁】这种的可以保证能匹配到,但是如果隔词搜索就不让他显示出来,比如:【北地】,【京铁】,这种隔词了,就不让搜索出来如何处理,不采用match_phrase的方法,还有没有更加高效的方法? 我尝试过使用match_phrase可以做到我要的结果,但是mat