如何在Elasticsearch 7.7.0及更高版本中进行精确的子字符串匹配

问题描述

这是我的es索引

PUT /recharge
{
  "mappings": {
      "properties": {
        "word": {"type": "text"},"varients": {
          "type": "object","properties": {
            "w": {"type": "text"}
        }
      }
    }
  }
}
POST recharge/_doc/1
{
  "word": "International roaming","varients": [
    {
      "w": "international roaming"
    }
  ]
}

POST recharge/_doc/2
{
  "word": "domestic roaming","varients": [
    {
      "w": "domestic roaming"
    },{
      "w": "roaming"
    }
  ]
}

我正在向弹性搜索发送以下查询,并获得以下输出

GET recharge/_search
{
  "query": {
    "multi_match": {
      "query": "I want International roaming pack for my number","fields": ["varients.w","word"]
    }
  }
}

输出结果中我得到

{"title": "Domestic roaming"}
{"title": "International roaming"}

在字符串匹配的情况下,我不希望两个输出都匹配,而是只希望与查询部分完全匹配的字符串。即{"title": "International roaming"}

我只需要从查询部分中进行准确的搜索,如下所示:

I require international roaming packs

{"title": "International roaming"}

I require domestic roaming packs

{"title": "Domestic roaming"}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

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