我索引了2个对象(ES 1.5)
{
tags: ["tag1","bla-bla"]
}
{
tags: ["tag2"]
}
如果我提出此请求:
{
"query": {
"filtered": {
"filter": {
"bool": {
"should":
[
{
"term": {
"tags": "bla-bla"
}
}
]
}
}
}
}
}
弹性返回无结果,因为“tags”字段中有“ - ”。
如果我搜索它,它有效,我有1个结果:
...
"term": {
"tags": "tag1"
}
...
有人解释为什么当我在“标签”字段中添加短划线(“ - ”)时,没有结果?
答案 0 :(得分:1)
如果未指定自定义的Elasticsearch将Standart Analyzer来分析字段。并且标准分析器将删除(在您的情况下为-
)的结点,并将您的术语标记为[tag1
,bla
]。
您可以使用term vectors检查分析的表单:
GET <index>/<type>/<id>/_termvectors?fields=tags