使用elasticsearch_dsl(Python)时如何指定文档类型?同样,如何指定几个指数?

时间:2015-11-18 01:58:08

标签: python elasticsearch-dsl

我想创建这个例子

eclipse.classpath.downloadJavadoc = true // defaults to 'false' 

使用Pythons elasticsearch_dsl。

GET /my_store/products/_search
{
    "query" : {
        "filtered" : { 
            "query" : {
                "match_all" : {} 
            },
            "filter" : {
                "term" : { 
                    "price" : 20
                }
            }
        }
    }
}

好的,这指定了主机,端口和索引。

import elasticsearch as ES
import elasticsearch_dsl as dsl
from elasticsearch_dsl import Search

client = ES.Elasticsearch() # i'm using the localhost default client
s = Search(using = client, index = "my_store") 

但是如何指定文档类型是“产品”?似乎在Search()函数中应该有一个参数。

类似的问题,假设我想运行相同的查询,但我想让它运行索引“my_store”和“her_store”。我该如何指定?

2 个答案:

答案 0 :(得分:5)

你可以这样使用。

s = Search(using=client, index=('my_report', 'my_store'), doc_type=('products'))

索引参数采用listtuplestring类型。

在搜索构造函数中,您可以看到

if isinstance(index, (tuple, list)):
    self._index = list(index)
elif index:
    self._index = [index]

答案 1 :(得分:3)

我让它像这样工作:

client = connections.create_connection(hosts=['myNode01:9200'])
s = Search().using(client)
      .index('myindex')
      .doc_type('mytype1')
      .doc_type('mytype2')
      .query('match', name='arandomname')