在弹性搜索中,数据已按以下格式保存:
{
'name': 'somename',
'data': '{"age": 25}'
}
如何搜索
{"match": {"data.age": 25}}
答案 0 :(得分:3)
您需要在data
字段中使用nested data type,然后才能使用同一文档中提供的示例来查询嵌套字段。
简而言之,如果索引正确,则需要在查询中包含nested path
。
"nested": {
"path": "data",
根据您的示例添加端到端工作示例
索引映射
{
"mappings": {
"properties": {
"name" : {
"type" : "text"
},
"data": {
"type": "nested"
}
}
}
}
索引请求
{
"name": "somename",
"data": {
"age": 25
}
}
搜索请求
{
"query": {
"nested": {
"path": "data",
"query": {
"match": {
"data.age": 25
}
}
}
}
}
和搜索结果
"hits": [
{
"_index": "nested",
"_type": "_doc",
"_id": "1",
"_score": 1.0,
"_source": {
"name": "somename",
"data": {
"age": 25
}
}
}
]
答案 1 :(得分:2)
GET / myIndex / _search
{
"query": {
"nested": {
"path": "data",
"query": {
{"match": {"data.age": 25}}
}
}
}
}
有关更多信息,请参见https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-nested-query.html。