如何使用弹性执行子串搜索?

时间:2018-10-08 07:14:43

标签: elasticsearch

我的弹性体中有green elephant,我想匹配queries中的前两个注释:green elephant is herewhite and green elephant

await self.upload_to_elastic('green elephant')

queries = ('green elephant is here',
           'white and green elephant',
           'white and green and gray elephant'
           'elephant green',
           'green is my elephant name',
           'green',
           'green elephants')

for query in queries:
    items = await service.search_by_phrase(query)

进行此子字符串搜索的方式是什么?

2 个答案:

答案 0 :(得分:0)

如果您查询的是message字段中的值,则只需使用regexp

{
    "query": {
        "regexp":{
            "message": {
                "value": ".*(green elephant).*"
            }
        }
    }
}

答案 1 :(得分:0)

您需要使用斜率为0(默认值)的phrase matching,才能以正确的顺序匹配连续词条。

iframe.getContentDocument().getBody()

正则表达式查询方法是功能性的,但由于正则表达式查询确实消耗资源,因此在生产中不可行。