我是 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/