当我尝试将“not_analyzed”应用到我的ES映射中时,它不起作用。
我在Laravel中使用此包用于ES - Elasticquent
我的映射如下:
'ad_title' => [
'type' => 'string',
'analyzer' => 'standard'
],
'ad_type' => [
'type' => 'integer',
'index' => 'not_analyzed'
],
'ad_type' => [
'type' => 'integer',
'index' => 'not_analyzed'
],
'ad_state' => [
'type' => 'integer',
'index' => 'not_analyzed'
],
然后我进行API调用以查看映射,它将输出:
"testindex": {
"mappings": {
"ad_ad": {
"properties": {
"ad_city": {
"type": "integer"
},
"ad_id": {
"type": "long"
},
"ad_state": {
"type": "integer"
},
"ad_title": {
"type": "string",
"analyzer": "standard"
},
"ad_type": {
"type": "integer"
},
请注意,缺少not_analyzed。 我也无法在日志中看到任何错误/警告。
答案 0 :(得分:1)
有一个简单的测试,看它是否有效:
PUT /stack
{
"mappings": {
"try": {
"properties": {
"name": {
"type": "string",
"index": "not_analyzed"
},
"age": {
"type": "integer",
"index": "not_analyzed"
}
}
}
}
}
GET /stack/_mapping
,回复是:
{
"stack": {
"mappings": {
"try": {
"properties": {
"age": {
"type": "integer"
},
"name": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
}
答案 1 :(得分:1)
我从自己的经验中得到的结论是,在进行任何索引之前必须先进行映射。删除您创建的索引,分配not_analyzed映射器,然后再次索引字段,您将看到not_analyzed字段。如果这对你有用,请告诉我。谢谢。