在ElasticSearch中,破折号和下划线不是特殊字符,但它们是导致术语分离的字符。重要的是现场索引。我建议设置一个多字段。
https://www.elastic.co/guide/zh-CN/elasticsearch/client/net-
api/current/multi-
fields.html
这是一个例子:
PUT hilden1PUT hilden1/type1/_mapping{ "properties": { "multifield1": { "type": "string", "fields": { "raw": { "type": "string","index": "not_analyzed" } } } }}POST hilden1/type1{ "multifield1": "hello"}POST hilden1/type1{ "multifield1": "hello_underscore"}POST hilden1/type1{ "multifield1": "hello-dash"}让我们尝试找到虚线值:
GET hilden1/type1/_search{ "query": { "filtered": { "filter": { "term": { "multifield1": "hello-dash" } } } }}这不会返回任何结果,因为ES会将字段分为幕后两部分。但是,因为我们将此字段设置为多字段,所以我们可以根据设置的“
.raw”查询它。该查询将获得您想要的结果。
GET hilden1/type1/_search{ "query": { "filtered": { "filter": { "term": { "multifield1.raw": "hello-dash" } } } }}


