我目前正試圖通過庫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