elasticsearch通配符不返回任何结果

kiz8lqtg  于 8个月前  发布在  ElasticSearch
关注(0)|答案(1)|浏览(70)

我有一个文本的判断,其中“avv。马里奥罗西”出现。判决书全文如下:
“第936/2020号法规关于终止以姓氏促成的婚姻的民事效力,1967年7月12日出生于诺瓦拉(no),居住在borgomanero,via coco x n。x,选择性地居住在borgomanero,通过s.乔万尼; 7,在avv的律师事务所。mario rossi,根据记录中的委托书,她由他代理和辩护;- 请愿人-诉x x x,1957年6月24日生于mezzomerico,居住在vaprio d 'agogna,via x n。29/B -被告缺席-在检察官介入请愿人的最后辩论的情况下:“
文本写入具有以下Map的文档字段中:

"text": {
 "type": "text",
 "fields": {
   "keyword": {
     "type": "keyword",
     "ignore_above": 256
   }
 }
}

我尝试执行的查询没有返回任何结果,它是这样的:

{
  "query": {
    "bool": {
      "must": [
        {
          "wildcard": {
            "text.keyword": "*a?v. mario rossi*"
          }
        }
      ],
      "should": []
    }
  }
}

为什么文件没有返回?是不是因为ignore_above设置太低了?我不这么认为是因为?马里奥·罗西案”的篇幅为15卡拉瑟斯。

更新

{
  "mappings": {
    "properties": {
      "text": {
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 256
          }
        },
        "store": true    <-------- Add this line to enable storing the text.keyword field
      }
    }
  }
}

一旦存储了“text.keyword”字段,您就可以在响应中访问它,并对其使用通配符查询”是真的吗?如何使用这个新Map重新索引my_index elasticsearch?我是否更改my_index的Map,然后复制到new_index?
请记住,显式存储字段可能会增加存储需求,因此请根据您的特定用例和需求明智地使用它。

fhg3lkii

fhg3lkii1#

这是因为索引的文本大于256个字符。所以它实际上并没有为你创建关键字子字段。通过索引,再次使用精确的Map和使用精确的查询,查询的文本要短得多。

相关问题