我正在尝试创建一个基于名称或数字返回结果的搜索。我的映射属性看起来像这样。
"properties": {
"id": {
"type": "integer"
},
"img": {
"type": "binary"
},
"name": {
"type": "string"
}
}
我所做的查询是simple query string query,如下所示:
{
"query": {
"simple_query_string": {
"query": "test~5",
"analyzer": "snowball",
"fields": ["name", "id"],
"default_operator": "and",
"lenient": true
}
}
}
对于仅使用name
字段中的数据的查询,此方法非常适用。例如,当我查询"1488"
时,它应该返回带有id == 1488
的项目,但它不会返回任何内容。
起初我以为lenient
遗失了,但这并没有解决问题。
我需要查看我的查询才能工作?
- [编辑] -
认为ES可能只搜索第一个字段。所以我将查询更改为使用"fields": ["id", "name"]
。这在查找字符串时仍然有效,但在查找数字时仍然没有结果。