我目前正试图通过库elasticutils
在现有ElasticSearch实例中使用filter
。不幸的是,我无处可去。我不确定问题是因为我做了一些基本错误还是图书馆存在问题(很可能是AFAICT)。ElasticSearch通过elasticutils过滤器
我得到了一个具有特定映射的索引,其中包含字符串类型(没有给出明确的分析器)的字段(称为“A”)。该字段总是包含一个字符串列表。
我想通过包含在该领域的一个给定的字符串来过滤我的文档,所以我尝试:
import elasticutils as eu
es = eu.S().es(urls=[ URL ]).indexes(INDEX).doctypes(DOCTYPE)
f = eu.F(A="text")
result = es.filter(f)
但返回一个空结果集。我也尝试过使用f = eu.F(A__in="text")
,但是这导致了一个很大的错误信息,最有趣的部分是[terms] filter does not support [A]
。
我想知道如果我必须以不同的方式配置我的索引,也许我必须创建一个方面才能使用过滤器?但是在我读的文档中我没有发现任何提示。
我想要使用filter
的理由是,他们可以自由组合使用and
,or
和not
。我还发现一些规格说明query
也可以是布尔值,但它们通常指的是must
,should
和must_not
,这些对我来说不够灵活。但是我也发现了一些提到了operator
标志的规格query
,它可以设置为and
或or
。任何信息都是值得欢迎的。
所以,我的问题现在:
- 它是一个配置问题?这个方面有什么关系?
- 我想通过跳过lib来测试这是否是一个库错误,那么如何使用curl来执行这个过滤操作?或任何其他图书馆(也许
pyes
)? - 是可能的几个查询(即根本不使用过滤器)的灵活组合(使用
and
,or
,not
及其组合)?我会怎么做? (最好在elasticutils
中,但其他库语法,例如pyes
或简单的CURL也是受欢迎的)。
我可以建议您查看适用于Chrome的Sense插件(https://chrome.google.com/webstore/detail/sense/doinijnbnggojdlcjifpdckfokbbfpbo?hl=en)吗?这是使用ES群集而不是CURL的强大工具。另外,我建议从pyelasticsearch开始,而不是似乎抽象得太多的东西 - 至少从(http://pyelasticsearch.readthedocs.org/)开始。 :) –
我不知道这个库很好 - 有没有办法看到它用来查询ES的JSON? – argentage