当建议失败时,对多个索引的搜索查询不会发现命中

时间:2018-04-26 08:24:22

标签: elasticsearch

我有几个具有不同字段的索引,虽然只包含搜索查询的请求会产生预期的结果,但当我将查询与suggest部分结合起来时,我没有得到任何命中,这部分不适用于包含索引的部分点击(因为suggest中的字段引用不存在)。

编辑:我没有得到索引的任何建议并不是真正的问题,但我希望有办法确保我仍然得到{{1}的结果即使query部分失败,也要分开。

有问题的实际查询是跨越多个字段的suggestion非常复杂,但我可以通过以下示例重现我的问题。

  1. 创建两个具有不同字段的索引

    multi_match
  2. 向索引添加内容

    PUT /test1
    {
        "mappings": {
            "default": {
                "properties": {
                    "field1": {
                        "type": "text"
                    }
                }
            }
        }
    }
    
    PUT /test2
    {
        "mappings": {
            "default": {
                "properties": {
                    "field2": {
                        "type": "text"
                    }
                }
            }
        }
    }
    
  3. PUT /test1/default?refresh=true { "field1": "DEADBEEF in index 1" } PUT /test2/default?refresh=true { "field2": "FOOBARDOO in index 2" } 中搜索FOOBARD会产生索引field2的预期结果

    test2
  4. 但是当我将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"
                }
            }
        }
    }
    
  5. 在寻找多个指数的建议时,这是预期的行为,还是我在这里做错了什么?我想避免提出两个查询,这些查询仅在建议部分有所不同。

    任何提示和指示都非常受欢迎。

1 个答案:

答案 0 :(得分:0)

这是预期的行为。建议期望字段映射出现在查询的所有索引中。

这是相关的source code(不确定是否在手册中)