ElasticSearch:不匹配

问题描述

我想执行精确单词匹配和部分单词/子字符串匹配。例如,如果我搜索“测试产品”,那么我应该能够在结果中找到“测试”和“产品”相关的文本。我正在使用下面的匹配查询搜索弹性搜索,它没有给我精确的匹配,而是给出了一些更不重要的匹配。例如,它在结果中给出了“示例”相关文本。

我正在使用弹性搜索 6.3

请在下面找到我的查询

GET /_search { "must":{ "query_string":{ "query":"title:测试产品" } } }

搜索结果: “命中”:[ { "_index": "67107104","_type": "_doc","_id": "1",“_score”:0.6931471, “_来源”: { "title": "测试" } },{ "_index": "67107104","_id": "2",“_score”:0.6931471, “_来源”: { "title": "产品不错" } },"_id": "3",“_score”:0.6931471, “_来源”: { “标题”:“样品” } } ]

预期搜索结果

“命中”:[ { "_index": "67107104",“_score”:0.6931471, “_来源”: { "title": "产品不错" } } ]

解决方法

在上面的搜索查询中,您在 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"
    }
  }
]

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...