elasticsearch - Elasticsearch匹配查询多词不精确词

标签 elasticsearch nodes

我是 Elasticsearch 的新手,我很累在索引文档中查找数据。就像我有4个文档,在2个字段中有fullName, userName-

{
    "_index": "users",
    "_type": "users",
    "_id": "NwV2GG8BmEFrScbl3IE8",
    "_score": 1,
    "_source": {
        "fullName": "Max Payne",
        "id": 1,
        "userName": "MaxP"
    }
},
{
    "_index": "users",
    "_type": "users",
    "_id": "MgV2GG8BmEFrScbl3IE8",
    "_score": 1,
    "_source": {
        "fullName": "Thomas John",
        "id": 6,
        "userName": "ThomesJ"            
    }
},
{
    "_index": "users",
    "_type": "users",
    "_id": "MgD2TG1BmEFrrfbs3RT9",
    "_score": 1,
    "_source": {
        "fullName": "John well",
        "id": 7,
        "userName": "ThomesW"
    }
},
{
    "_index": "users",
    "_type": "users",
    "_id": "QwR58DTBmEFrScbl8op4",
    "_score": 1,
    "_source": {
        "fullName": "Max smith",
        "id": 1,
        "userName": "MaxS"
    }
}

如果搜索
情况1
'妈'那我需要3个证件

情况二
'Max',那么我需要2个文件

情况3
'Max s',那么我需要1个文档(Max Smith)
'Max p'然后我需要1个文档(Max Payne)

案例4
“约翰”,那我需要2个文件

我尝试使用此方法,如果完整字符串匹配,则找到数据,否则找不到数据。
"bool" : {
    "should": {
        "query_string": {
        "query": '*'+keyword+'*', // "query": keyword+'*',
        "fields": [ "fullName", "userName" ]
        },
    },
}

另外,我尝试与此但不工作
"term": {
    "fullName": {
    "value": keyword
  }
}

我在NodeJs Client中使用Elasticsearch 6.3

最佳答案

您需要尝试此查询并根据您的不同情况使用通配符,您将获得所需的预期结果

{
  "query": {
    "wildcard": {
      "fullName": {
        "value": "keyword"
      }
    }
  }
}

例如情况1:“值”:“* ma *”
情况2:“值”:“最大值”,类似。

希望这会有所帮助。

关于elasticsearch - Elasticsearch匹配查询多词不精确词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59562702/

相关文章:

elasticsearch - 使用Logstash丰富一个ElasticSearch文档中的另一个字段

spring - 使用Spring Data ElasticSearch 3.0.0.BUILD-SNAPSHOT和Elasticsearch 5.4.0的错误分页

python - 在 Jupyter Python 中使用 Graphviz 设置节点位置

c++ - 寻找有向图的最大值

c++ - 带链表的回文函数

colors - neo4j-本地主机 :7474 browser - which nodes are coloured? (py2neo)

regex - 日志模式的grok过滤器

php - Elasticsearch:在字符串中搜索单词并获得分数的最佳方法是什么?

java - Elasticsearch 返回没有父对象的嵌套对象

node.js - 如果我使用 send 或 json, Node 应用程序崩溃