弹性搜索 match_pharse 查询无法正常工作
Elastic search match_pharse query is not working properly
我正在尝试在 kibana 中使用 match_phrase
查询来搜索以下文档,但没有得到响应。
请在elastic search中找到下面的文档
{
"took":7,
"timed_out":false,
"_shards":{
"total":5,
"successful":5,
"skipped":0,
"failed":0
},
"hits":{
"total":2910,
"max_score":1.0,
"hits":[
{
"_index":"documents",
"_type":"doc",
"_id":"DmLD22MBFTg0XFZppYt8",
"_score":1.0,
"_source":{
"doct_country":"DE",
"filename":"series_Accessories_v1_de-DE.pdf",
}
]
}
}
请找到用于搜索上述文档的查询。
GET documents/_search
{
"query": {
"match_phrase" : {
"message" : "Accessories_v1_de-DE.pdf"
}
}
}
对于上述查询,我得到了这样的回复:
{
"took": 0,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 0,
"max_score": null,
"hits": []
}
}
有两个问题。据推测,在您的查询中,您的意思是使用 filename
字段而不是 message
,它在您的示例文档中不存在:
GET documents/_search
{
"query": {
"match_phrase" : {
"filename" : "Accessories_v1_de-DE.pdf"
}
}
}
其次,您需要 Elasticsearch 知道 filename
字段应该被索引, _
被视为一个拆分。默认情况下不会发生这种情况。一种方法是按如下方式定义您的映射:
PUT /documents
{
"mappings" : {
"document" : {
"properties" : {
"filename" : { "type" : "text", "analyzer": "simple" }
}
}
}
}
简单分析器将拆分任何非字母,因此 _
和数字将被视为拆分。根据您的应用程序,您可能需要对标记化进行更细粒度的控制。参见documentation。
我正在尝试在 kibana 中使用 match_phrase
查询来搜索以下文档,但没有得到响应。
请在elastic search中找到下面的文档
{
"took":7,
"timed_out":false,
"_shards":{
"total":5,
"successful":5,
"skipped":0,
"failed":0
},
"hits":{
"total":2910,
"max_score":1.0,
"hits":[
{
"_index":"documents",
"_type":"doc",
"_id":"DmLD22MBFTg0XFZppYt8",
"_score":1.0,
"_source":{
"doct_country":"DE",
"filename":"series_Accessories_v1_de-DE.pdf",
}
]
}
}
请找到用于搜索上述文档的查询。
GET documents/_search
{
"query": {
"match_phrase" : {
"message" : "Accessories_v1_de-DE.pdf"
}
}
}
对于上述查询,我得到了这样的回复:
{
"took": 0,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 0,
"max_score": null,
"hits": []
}
}
有两个问题。据推测,在您的查询中,您的意思是使用 filename
字段而不是 message
,它在您的示例文档中不存在:
GET documents/_search
{
"query": {
"match_phrase" : {
"filename" : "Accessories_v1_de-DE.pdf"
}
}
}
其次,您需要 Elasticsearch 知道 filename
字段应该被索引, _
被视为一个拆分。默认情况下不会发生这种情况。一种方法是按如下方式定义您的映射:
PUT /documents
{
"mappings" : {
"document" : {
"properties" : {
"filename" : { "type" : "text", "analyzer": "simple" }
}
}
}
}
简单分析器将拆分任何非字母,因此 _
和数字将被视为拆分。根据您的应用程序,您可能需要对标记化进行更细粒度的控制。参见documentation。