我有一个类似下面的JSON文档
{"type":"line","line_id":89522,"play_name":"Taming of the Shrew","speech_number":19,"line_number":"2.1.58","speaker":"PETRUCHIO","text_entry":"To instruct her fully in those sciences,"}
{"index":{"_index":"shakespeare","_id":89522}}
{"type":"line","line_id":89523,"play_name":"Taming of the Shrew","speech_number":19,"line_number":"2.1.59","speaker":"PETRUCHIO","text_entry":"Whereof I know she is not ignorant:"}
{"index":{"_index":"shakespeare","_id":89523}}
{"type":"line","line_id":89524,"play_name":"Taming Day","speech_number":19,"line_number":"2.1.60","speaker":"PETRUCHIO","text_entry":"Accept of him, or else you do me wrong:"}
{"index":{"_index":"shakespeare","_id":89524}}
我正在尝试在驯服上做一个搜索,只要play_name包含“驯服”,它就会返回。
我的查询是这样的
GET /shakespeare/doc/_search
{
"query":{
"match":{"play_name":"Taming"}
}
}
问题是,它不会返回play_name包含HOwever的所有结果。我看了文档,看起来这应该行得通。因此,有没有人可以告诉mw我做错了什么?
PS :这是我的地图设置
{
"shakespeare": {
"mappings": {
"doc": {
"properties": {
"line_id": {
"type": "integer"
},
"line_number": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"play_name": {
"type": "keyword"
},
"speaker": {
"type": "keyword"
},
"speech_number": {
"type": "integer"
},
"text_entry": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"type": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
}
}
}
发布于 2018-06-11 08:33:55
您应该将play_name
字段的映射更改为"type": "text"
。如果您计划搜索精确匹配,则仍然可以包括关键字映射。
play_name
的最终映射应如下所示:
"play_name": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
https://stackoverflow.com/questions/50782918
复制相似问题