elasticsearch,Python,elasticsearch" /> elasticsearch,Python,elasticsearch" />

如果没有与es 2.X的精确匹配,我如何获得成功?(Python elasticsearch)

如果没有与es 2.X的精确匹配,我如何获得成功?(Python elasticsearch),python,elasticsearch,Python,elasticsearch,我对elasticsearch有问题。索引中有一项(“'title':'UsingPython with Elasticsearch'”)。我可以得到返回的结果,只有我搜索了确切的查询。但是,当我搜索“'title':'usingpython with'”时,代码什么也打不到。 es版本是:{u'cluster_name':u'elasticsearch',u'tagline':u'You known,for Search',u'version':{u'lucene_version':u'5.4

我对elasticsearch有问题。索引中有一项(“'title':'UsingPython with Elasticsearch'”)。我可以得到返回的结果,只有我搜索了确切的查询。但是,当我搜索“'title':'usingpython with'”时,代码什么也打不到。
es版本是:{u'cluster_name':u'elasticsearch',u'tagline':u'You known,for Search',u'version':{u'lucene_version':u'5.4.1',u'build_hash':u'd045fc29d1932bce18b2e65ab8b297fbf6cd41a1',u'number':u'2.2.2.1',u'build时间戳:u'2016-03-09T09:38:54Z',u'build快照:False},u'name':u'Lorelei Travis'}
如果我是对的,应该是es 2.2.1。代码见附件。那么,当我使用类似于“使用Python with”的查询进行搜索时,如果没有精确的匹配查询,我如何获得成功呢。谢谢

INDEX_NAME = 'test_11'
from elasticsearch import Elasticsearch
es = Elasticsearch()
print es.info()

request_body = {  
      "mappings":{  
        "post":{  
          "properties":{  
            "title":{  
              "type":"string",
              "index":"analyzed"
            }
          }
        }
      }
    }

if es.indices.exists(INDEX_NAME):
    res = es.indices.delete(index = INDEX_NAME)
    print(" response: '%s'" % (res))

res = es.indices.create(index = INDEX_NAME, body=request_body)
print res

es.index(index=INDEX_NAME, doc_type='post', id=1, body={
  'title': 'Using Python with Elasticsearch'
  }
)

es.indices.refresh(index=INDEX_NAME)

res = es.search(index=INDEX_NAME, body={'query': {'match': {'title': 'Using Python with Elasticsearch'}}})
#res = es.search(index=INDEX_NAME, body ={"query":{"match":{"title":"Using Python with"}}})

print '\n'
res = es.indices.get(index=INDEX_NAME)
print res
使用查询?如果你想要一些更有趣的东西,请考虑查询或查询。 编辑:如果我错了,请纠正我:是否希望
将Python与
一起使用来匹配所有结果,例如
将Python与Elasticsearch一起使用
将Python与Lucene一起使用
?然后是一个映射,如:

request_body = {  
  "mappings":{  
    "post":{  
      "properties":{  
        "title":{  
          "type":"string",
          "index":"not_analyzed"
        }
      }
    }
  }
}
然后是如下查询:

{
    "query": {
        "prefix": {
            "title": "Using Python with"
        }
    }
}
应归还所有相关文件。 注:我将
索引
字段更改为
未分析

更多

编辑2: 如果要匹配目标字段中任何位置包含精确查询的所有文档,而不仅仅是作为前缀,请使用最初建议的查询。然后

{
    "query": {
        "wildcard": {
            "name": "Using Python with*"
        }
    }
}
将像前缀查询一样工作,并匹配使用Python和Elasticsearch的
,以及使用Python和Lucene的
,但是

{
    "query": {
        "wildcard": {
            "name": "*Python with Elasticsearch"
        }
    }
}
将仅使用Python和Elasticsearch匹配
。使用Python和elasticsearch时,它不会匹配
,但您说过希望精确匹配短语。

使用查询?如果你想要一些更有趣的东西,请考虑查询或查询。 编辑:如果我错了,请纠正我:是否希望
将Python与
一起使用来匹配所有结果,例如
将Python与Elasticsearch一起使用
将Python与Lucene一起使用
?然后是一个映射,如:

request_body = {  
  "mappings":{  
    "post":{  
      "properties":{  
        "title":{  
          "type":"string",
          "index":"not_analyzed"
        }
      }
    }
  }
}
然后是如下查询:

{
    "query": {
        "prefix": {
            "title": "Using Python with"
        }
    }
}
应归还所有相关文件。 注:我将
索引
字段更改为
未分析

更多

编辑2: 如果要匹配目标字段中任何位置包含精确查询的所有文档,而不仅仅是作为前缀,请使用最初建议的查询。然后

{
    "query": {
        "wildcard": {
            "name": "Using Python with*"
        }
    }
}
将像前缀查询一样工作,并匹配使用Python和Elasticsearch的
,以及使用Python和Lucene的
,但是

{
    "query": {
        "wildcard": {
            "name": "*Python with Elasticsearch"
        }
    }
}

将仅使用Python和Elasticsearch匹配
。使用Python和elasticsearch时,它不会匹配
,但您说过希望精确匹配短语。

我知道模糊查询可以实现此功能。但我想实现全文搜索。谢谢谢谢它起作用了!但我想实现全文搜索。使用查询“Python With Elasticsearch”,它什么也打不到。好的,那么您需要一个regexp查询,我添加了一个示例。如果答案能解决你的问题,请接受。我非常感谢你的帮助!我主要有一个全文搜索的问题。对于这个官方教程,我的实验结果是“{”take:1,“timed_out”:false”,“u shards”:{“total”:1,“successful”:1,“failed”:0},“hits”:{“total”:0,“max_score”:null,“hits”:[]}“全文搜索似乎不起作用!谢谢您是否尝试了我在最新的答案编辑中建议的
通配符
查询?!我知道模糊查询可以实现这个功能。但我想实现全文搜索。谢谢谢谢它起作用了!但我想实现全文搜索。使用查询“Python With Elasticsearch”,它什么也打不到。好的,那么您需要一个regexp查询,我添加了一个示例。如果答案能解决你的问题,请接受。我非常感谢你的帮助!我主要有一个全文搜索的问题。对于这个官方教程,我的实验结果是“{”take:1,“timed_out”:false”,“u shards”:{“total”:1,“successful”:1,“failed”:0},“hits”:{“total”:0,“max_score”:null,“hits”:[]}“全文搜索似乎不起作用!谢谢您是否尝试了我在最新的答案编辑中建议的
通配符
查询?!