首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Elastic search嵌套match_phrase问题

Elastic search嵌套match_phrase问题
EN

Stack Overflow用户
提问于 2012-12-27 19:07:08
回答 2查看 1.2K关注 0票数 1

我们在嵌套对象上执行match_phrase查询,其中嵌套对象只有一个字符串值。

我们打算找到字符串短语的匹配项。

让我们假设,

1)映射如下。

代码语言:javascript
复制
"attr": {
                "type": "nested",
                "properties": {
                    "attr": {
                        "type": "multi_field",
                        "fields": {
                            "attr": { "type": "string", "index": "analyzed", "include_in_all": true, "analyzer": "keyword" },
                            "untouched": { "type": "string", "index": "analyzed", "include_in_all": false, "analyzer": "not_analyzed" }
                        }
                    }
                }
            }

2)数据类似。

对象A:

代码语言:javascript
复制
"attr": [
    {
        "attr": "beverage"
    },
    {
        "attr": "apple wine"
    }
]

对象B:

代码语言:javascript
复制
"attr": [
    {
        "attr": "beverage"
    },
    {
        "attr": "apple"
    },
    {
        "attr": "wine"
    }
]

3)因此,查询如下

代码语言:javascript
复制
{
    "query": {
        "match": {
            "_all": {
                "query": "apple wine",
                "type": "phrase"
                }
            }
        }
    }

我们只期待对象A,但不幸的是,对象B也即将到来。

请期待您的建议。

EN

回答 2

Stack Overflow用户

发布于 2013-01-02 14:20:06

在您的例子中,单独的数组值在其偏移量中应该有较大的间隙,以避免短语匹配。在相同字段的实例之间存在默认的可配置间距,但此间距的默认值为0。

您应该在字段映射中更改它:

代码语言:javascript
复制
"attr": { "type": "string", 
"index": "analyzed", 
"include_in_all": true, 
"analyzer": "keyword", 
"position_offset_gap": 100 
}
票数 0
EN

Stack Overflow用户

发布于 2014-04-02 18:00:37

您还需要告诉查询在一个嵌套文档中搜索所有术语:

代码语言:javascript
复制
"query": {
  "nested": {
    "path": "attr",
    "query": {
      "match": {
        "attr": {
          "query": "apple wine",
          "operator": "and"
        }
      }
    }
  }
}

http://www.spacevatican.org/2012/6/3/fun-with-elasticsearch-s-children-and-nested-documents/是一个很好的信息来源。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14053657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档