ElasticSearch在包含破折号的bool过滤器上不返回任何结果

时间:2016-05-14 22:33:17

标签: elasticsearch

我索引了2个对象(ES 1.5)

{
    tags: ["tag1","bla-bla"]
}

{
    tags: ["tag2"]
}

如果我提出此请求:

{
    "query": {
        "filtered": {
            "filter": {
                "bool": {
                    "should":
                    [
                        {
                            "term": {
                                "tags": "bla-bla"
                            }
                        }
                    ]
                }
            }
        }
    }
}

弹性返回无结果,因为“tags”字段中有“ - ”

如果我搜索它,它有效,我有1个结果:

...
    "term": {
         "tags": "tag1"
    }
...

有人解释为什么当我在“标签”字段中添加短划线(“ - ”)时,没有结果?

1 个答案:

答案 0 :(得分:1)

如果未指定自定义的Elasticsearch将Standart Analyzer来分析字段。并且标准分析器将删除(在您的情况下为-)的结点,并将您的术语标记为[tag1bla]。

您可以使用term vectors检查分析的表单:

GET <index>/<type>/<id>/_termvectors?fields=tags