如何解决如何在弹性搜索中使嵌套字段中的子字段变平?
doc = {
"id": 1,"content": [
{
"txt": I,"time": 0,},{
"txt": have,"time": 1,{
"txt": a book,"time": 2,{
"txt": do not match this block,"time": 3,]
}
我想匹配“我有一本书”,并返回匹配的时间:0,1,2。有谁知道如何针对这种情况建立索引和查询? 我认为应该将“ content.txt”弄平,但应该嵌套“ content.time”?
解决方法
想要匹配“我有一本书”,并返回匹配的时间:0,1,2。
添加带有索引映射,搜索查询和搜索结果的工作示例
索引映射:
{
"mappings": {
"properties": {
"content": {
"type": "nested"
}
}
}
}
搜索查询:
{
"query": {
"nested": {
"path": "content","query": {
"bool": {
"must": [
{
"match": {
"content.txt": "I have a book"
}
}
]
}
},"inner_hits": {}
}
}
}
搜索结果:
"inner_hits": {
"content": {
"hits": {
"total": {
"value": 3,"relation": "eq"
},"max_score": 2.5226097,"hits": [
{
"_index": "64752029","_type": "_doc","_id": "1","_nested": {
"field": "content","offset": 2
},"_score": 2.5226097,"_source": {
"txt": "a book","time": 2
}
},{
"_index": "64752029","offset": 0
},"_score": 1.5580825,"_source": {
"txt": "I","time": 0
}
},"offset": 1
},"_source": {
"txt": "have","time": 1
}
}
]
}
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。