【发布时间】:2020-05-21 16:00:13
【问题描述】:
我有下面的简单表格,其中包含来自 elasticsearch 的标题和代码列,如下所示
{ title: 'test1', code: 'ZjS3d3k8z',... },
{ title: 'test2 with more words', code: 'AjS3d2k1z',... }
我正在尝试使用通配符过滤标题和代码,如下所示,
{
"sort": [
{
"creation_date": {
"order": "desc"
}
},
"_score"
],
"query": {
"bool": {
"must": [
{
"match": {
"account_id": 100
}
}
],
"should": [
{
"wildcard": {
"code": "?test2 with"
}
},
{
"wildcard": {
"title": "*test2 with*"
}
}
],
"minimum_number_should_match": 1
}
}
}
上述查询适用于预期结果/失败,但在以下情况下没有结果
> 'test1' <---- works(return expected result) when i try to search single word
> 'test2' <---- works(return expected result) when i try to search single word
> 'test2 with'<---- fails(return empty result) when i try to search more than one word with space'
> 'test2 with more words' <---- fails(return empty result) when i try to search full title
当我尝试如下搜索代码时,它总是返回空结果!!!
"should": [
{
"wildcard": {
"code": "?ZjS3d3k8z"
}
},
{
"wildcard": {
"title": "*ZjS3d3k8z*"
}
}
]
我想使用 elasticsearch 从数百万条记录中搜索具有部分/全部价值的标题/代码。请多多指教。
【问题讨论】:
-
你能解释一下你所说的失败和工作是什么意思吗?是查询没有给你预期的结果还是导致一些错误。请添加所有不同类型的输入和预期输出组合。
-
Opster,现在更新了问题。上面的查询适用于某些具有预期结果的情况和某些没有结果的情况
标签: javascript node.js elasticsearch nosql