gpt4 book ai didi

java - Elasticsearch match_pharse 查询无法正常工作

转载 作者:行者123 更新时间:2023-12-02 11:08:01 24 4
gpt4 key购买 nike

我尝试在 kibana 中使用 match_phrase 查询搜索以下文档,但没有得到响应。

请查找以下可在 Elasticsearch 中找到的文档

    {  
"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

关于java - Elasticsearch match_pharse 查询无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50789692/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com