使用过滤器的特定字段无法获得相似的结果

时间:2018-11-09 15:23:00

标签: elasticsearch

我正在研究Elastic Search 6.4.2。我正在上传索引和映射,可搜索的字段是标题,内容,我想按“测试” 字段过滤结果。测试字段中的值为 abce,ghij,klmn 。我想使用字段“测试” 和值“ ghij” 过滤结果。

PUT /test_index
{
    "settings": {
        "index": {
            "number_of_shards": 4,
            "number_of_replicas": 1,
            "refresh_interval": "60s",
            "analysis" : {
              "analyzer" : {
                "my_analyzer" : {
                    "tokenizer" : "standard",
                    "filter" : ["standard", "lowercase", "my_snow"]
               },
               "blogs_analyzer": {
                 "type":       "stop",
                 "stopwords":  "_english_"
               }
              } ,


              "filter" : {
                "my_snow" : {
                    "type" : "snowball",
                    "language" : "Lovins"
                }
            }
        }
        }
    },
    "mappings": {
        "doc": {
            "_source": {
                "enabled": true
            },
            "properties": {
                "content": {
                    "type": "text",
                    "index": "true",
                    "store": true,
                           "analyzer":"my_analyzer",
                            "search_analyzer": "my_analyzer"
                },
                "host": {
                    "type": "keyword",
                    "index": "true",
                    "store": true

                },
                "title": {
                    "type": "text",
                    "index": "true",
                    "store": true,
                            "analyzer":"my_analyzer",
                            "search_analyzer": "my_analyzer"

                },
                "url": {
                    "type": "text",
                    "index": "true",
                    "store": true

       },
                "test": {
                    "type": "keyword",
                    "index": "true",
                    "store": true
        }

            }
        }
    }
}

为了获得结果,我尝试了下面的身体。

POST test_index/_search
{
    "query": {
        "bool": {
            "should": [{
                    "match": {
                        "content": {
                            "query": "sports"

                        }
                    }
                },
                {
                    "match": {
                        "title": {
                            "query": "sports"

                        }
                    }
                }
            ],
            "filter": {
                "bool": {
                    "must": [{
                        "term": {
                            "test": "ghij"
                        }
                    }]
                }
            }
        }
    }
}

如果我发送上述请求,我得到的记录更少了,我使用了发送直接请求GET /test_index/_search?q=sports,我得到了更多的结果

0 个答案:

没有答案