我有一个文本的判断,其中“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?
请记住,显式存储字段可能会增加存储需求,因此请根据您的特定用例和需求明智地使用它。
1条答案
按热度按时间fhg3lkii1#
这是因为索引的文本大于256个字符。所以它实际上并没有为你创建关键字子字段。通过索引,再次使用精确的Map和使用精确的查询,查询的文本要短得多。