我有几个具有不同字段的索引,虽然只包含搜索查询的请求会产生预期的结果,但当我将查询与suggest
部分结合起来时,我没有得到任何命中,这部分不适用于包含索引的部分点击(因为suggest
中的字段引用不存在)。
编辑:我没有得到索引的任何建议并不是真正的问题,但我希望有办法确保我仍然得到{{1}的结果即使query
部分失败,也要分开。
有问题的实际查询是跨越多个字段的suggestion
非常复杂,但我可以通过以下示例重现我的问题。
创建两个具有不同字段的索引
multi_match
向索引添加内容
PUT /test1
{
"mappings": {
"default": {
"properties": {
"field1": {
"type": "text"
}
}
}
}
}
PUT /test2
{
"mappings": {
"default": {
"properties": {
"field2": {
"type": "text"
}
}
}
}
}
在PUT /test1/default?refresh=true
{
"field1": "DEADBEEF in index 1"
}
PUT /test2/default?refresh=true
{
"field2": "FOOBARDOO in index 2"
}
中搜索FOOBARD
会产生索引field2
的预期结果
test2
但是当我将POST /_search
{
"query": {
"match": {
"field2": {
"query": "FOOBARD",
"fuzziness": 2
}
}
}
}
添加到查询
suggest
我收到有关丢失映射的失败消息,以及零搜索命中:
{
"query": {
"match": {
"field2": {
"query": "FOOBARD",
"fuzziness": 2
}
}
},
"suggest": {
"text": "FOOBARD",
"suggest-field1": {
"term": {
"field": "field1"
}
}
}
}
在寻找多个指数的建议时,这是预期的行为,还是我在这里做错了什么?我想避免提出两个查询,这些查询仅在建议部分有所不同。
任何提示和指示都非常受欢迎。